docker详细笔记

Docker详细笔记

目录

  1. Docker简介
    • 什么是Docker
    • Docker的优势
  2. Docker基础概念
    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)
  3. Docker环境安装
    • 在Windows上安装Docker
    • 在macOS上安装Docker
    • 在Linux上安装Docker
  4. Docker基本命令
    • 镜像命令
    • 容器命令
  5. Docker进阶操作
    • Dockerfile详解
    • 数据卷(Volumes)
    • 网络配置
  6. Docker实践应用
    • 使用Docker构建Web应用
    • 使用Docker进行持续集成/持续部署(CI/CD)
  7. 总结

Docker简介

什么是Docker

Docker是一个开源的容器化平台,旨在使应用程序在任何环境中都可以简单和一致地运行。通过使用操作系统层的虚拟化,Docker可以将软件包及其依赖项封装成一个标准化的单元(即容器)。

Docker的优势

  • 轻量级: 与传统的虚拟机相比,Docker容器更轻量级,可以在几秒钟内启动或停止。
  • 一致性: 通过Docker镜像,可以确保在本地开发的应用程序与在生产环境中运行的应用程序一致。
  • 高效资源使用: Docker可以共享主机的操作系统内核,从而有效减少系统资源消耗。

Docker基础概念

镜像(Image)

镜像是一个只读的模板,包含了创建Docker容器的指令。它类似于虚拟机中的快照。

容器(Container)

容器是镜像的一个运行实例。它不仅包含镜像中的全部内容,且添加了额外的应用程序状态。如果说镜像是建筑图纸,容器就是建筑成品。

仓库(Repository)

仓库是一组相关的镜像。通常,一个仓库包含多个版本的镜像。最常用的仓库是Docker Hub。

Docker环境安装

在Windows上安装Docker

  1. 下载并访问Docker Desktop for Windows

  2. 安装并运行Docker Desktop

  3. 通过命令行验证

    sh 复制代码
    docker --version

在macOS上安装Docker

  1. 下载并访问Docker Desktop for Mac

  2. 安装并运行Docker Desktop

  3. 通过命令行验证

    sh 复制代码
    docker --version

在Linux上安装Docker

以Ubuntu为例:

  1. 更新APT包索引

    sh 复制代码
    sudo apt-get update
  2. 安装依赖包

    sh 复制代码
    sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  3. 添加Docker官方GPG密钥

    sh 复制代码
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  4. 设置稳定版仓库

    sh 复制代码
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  5. 安装Docker引擎

    sh 复制代码
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
  6. 通过命令行验证

    sh 复制代码
    docker --version

Docker基本命令

镜像命令

  1. 拉取镜像

    sh 复制代码
    docker pull <image_name>
  2. 列出本地镜像

    sh 复制代码
    docker images
  3. 删除镜像

    sh 复制代码
    docker rmi <image_id>

容器命令

  1. 创建并运行容器

    sh 复制代码
    docker run -it <image_name>
  2. 列出运行中的容器

    sh 复制代码
    docker ps
  3. 停止容器

    sh 复制代码
    docker stop <container_id>
  4. 删除容器

    sh 复制代码
    docker rm <container_id>

Docker进阶操作

Dockerfile详解

Dockerfile是一个用于定义Docker镜像的构建步骤的文本文件。

示例Dockerfile:

dockerfile 复制代码
# 基础镜像
FROM ubuntu:20.04

# 维护者信息
LABEL maintainer="example@example.com"

# 安装依赖
RUN apt-get update && apt-get install -y nginx

# 复制文件到镜像
COPY . /var/www/html

# 暴露端口
EXPOSE 80

# 容器启动命令
CMD ["nginx", "-g", "daemon off;"]

数据卷(Volumes)

数据卷用于持久化数据,即使容器删除,数据仍然保留。

创建数据卷并挂载到容器:

sh 复制代码
docker run -it -v /host/path:/container/path <image_name>

网络配置

Docker允许通过桥接模式、自定义网络等方式配置网络。

创建自定义网络:

sh 复制代码
docker network create <network_name>

将容器加入自定义网络:

sh 复制代码
docker run -it --network <network_name> <image_name>

Docker实践应用

使用Docker构建Web应用

创建一个简单的Node.js应用并使用Docker进行容器化。

  1. 创建项目文件结构:

    myapp/
    ├── Dockerfile
    ├── package.json
    └── server.js
    
  2. 编写 package.json

    json 复制代码
    {
      "name": "myapp",
      "version": "1.0.0",
      "main": "server.js",
      "dependencies": {
        "express": "^4.17.1"
      },
      "scripts": {
        "start": "node server.js"
      }
    }
  3. 编写 server.js:

    js 复制代码
    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('Hello, Docker!');
    });
    
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => {
      console.log(`Server is running on port ${PORT}`);
    });
  4. 编写 Dockerfile:

    dockerfile 复制代码
    FROM node:14
    
    WORKDIR /usr/src/app
    
    COPY package.json .
    
    RUN npm install
    
    COPY . .
    
    EXPOSE 3000
    
    CMD ["npm", "start"]
  5. 构建镜像:

    sh 复制代码
    docker build -t myapp .
  6. 运行容器:

    sh 复制代码
    docker run -p 3000:3000 myapp

使用Docker进行持续集成/持续部署(CI/CD)

可以使用Docker结合Jenkins、GitLab CI等工具实现CI/CD流水线。

例如,在GitLab CI中使用Docker构建和部署:

yaml 复制代码
image: docker:latest

services:
  - docker:dind

stages:
  - build
  - deploy

build:
  stage: build
  script:
    - docker build -t myapp .

deploy:
  stage: deploy
  script:
    - docker run -d -p 3000:3000 myapp

总结

通过本文的学习,我们详细介绍了Docker的基础知识、环境安装、基本命令、以及进阶操作。希望这些内容能帮助你更好地理解和使用Docker,提高开发和部署效率。Docker作为一个强大的工具,在现代软件开发中扮演着越来越重要的角色,掌握它将极大提升你的技术能力。

Docker官方文档:Docker Documentation

相关推荐
小的~~30 分钟前
k8s使用本地docker私服启动自制的flink集群
docker·flink·kubernetes
世俗ˊ40 分钟前
CSS入门笔记
前端·css·笔记
万河归海4281 小时前
C语言——二分法搜索数组中特定元素并返回下标
c语言·开发语言·数据结构·经验分享·笔记·算法·visualstudio
诚诚k1 小时前
docker存储
运维·docker·容器
sorel_ferris1 小时前
Ubuntu-24.04中Docker-Desktop无法启动
linux·ubuntu·docker
数据智能老司机1 小时前
Kubernetes从入门到精通系列——外部 DNS 和全局负载均衡
云原生·容器·kubernetes
多多*2 小时前
OJ在线评测系统 登录页面开发 前端后端联调实现全栈开发
linux·服务器·前端·ubuntu·docker·前端框架
李小星同志2 小时前
高级算法设计与分析 学习笔记6 B树
笔记·学习
霜晨月c3 小时前
MFC 使用细节
笔记·学习·mfc
NiNg_1_2343 小时前
使用Docker Compose一键部署
运维·docker·容器