简介

Docker 是一个开源的容器化平台,用于构建、部署和管理应用程序。它通过容器技术将应用程序及其依赖项打包成标准化单元,确保在不同环境中运行的一致性。

Docker 官网
Docker 中文社区
Docker Hub
Docker 汉化包
Windows Subsystem for Linux 文档

核心概念

从最基础的元素开始,理解 Docker 的构成单元:

  1. Docker 镜像 (image)
    轻量级、只读的软件包,包含运行应用所需的代码、运行时、库、环境变量和配置文件。镜像由多层文件系统组成,支持分层复用和增量更新。

  2. Docker 容器 (container)
    镜像的运行实例,拥有独立的进程空间、网络和文件系统。容器在镜像层之上添加一个可写层,生命周期独立,可随时启动、停止或删除。

  3. Docker 数据卷 (volume)
    一种专门用于持久化数据的 Docker 对象,独立于容器的生命周期。它提供:

  • 数据持久化:容器删除后数据依然保留
  • 数据共享:多个容器可挂载同一数据卷,实现数据交换
  • 与宿主机解耦:数据由 Docker 管理,便于备份和迁移
  1. Dockerfile
    文本文件,通过一系列指令(如 FROM、RUN、COPY)定义如何构建镜像。
# 示例:基于 Nginx 镜像构建自定义镜像
FROM nginx:alpine
COPY ./html /usr/share/nginx/html
EXPOSE 80
  1. Docker Hub
    公共镜像仓库,用于共享和分发镜像。也可搭建私有 Registry(如 Docker Registry、Harbor)管理内部镜像。

  2. Docker 引擎
    C/S 架构中的服务端(守护进程),负责创建和管理容器、镜像、网络等。它是 Docker 的核心运行环境。

Docker 的优势

  • 轻量高效:容器共享主机操作系统内核,资源占用远低于虚拟机
  • 跨平台:支持 Linux、Windows 和 macOS,实现“一次构建,随处运行”
  • 快速部署:秒级启动容器,提升开发和运维效率
  • 隔离性:每个容器独立运行,通过 Namespace 和 Cgroup 实现进程、网络、文件系统的隔离,避免环境冲突
  • 版本控制与分层存储:Dockerfile 和镜像可纳入 Git 管理,实现基础设施即代码;镜像分层复用公共层,节省磁盘和网络传输时间
  • 生态丰富:与 CI/CD 工具(Jenkins、GitLab CI)、编排工具(Kubernetes、Docker Swarm)无缝集成

应用场景

  • 微服务架构:将复杂应用拆分为多个独立服务,每个服务打包为容器,独立开发、部署和扩展(如订单、支付、用户服务
  • 持续集成/交付 (CI/CD):在 Jenkins 或 GitLab CI 中通过 Docker 构建、测试和发布应用,保证开发、测试、生产环境一致性
  • 开发环境标准化:团队共享同一 Docker 镜像,消除“在我机器上能运行”的问题,新人加入可秒级搭建开发环境
  • 快速原型与测试:利用容器快速启动服务(如数据库、消息队列),方便功能验证和集成测试
  • 混合云/多云部署:容器镜像不受底层基础设施限制,可在不同云平台或本地数据中心间灵活迁移

核心架构

Docker 采用 客户端-服务器(C/S)架构

  1. Docker 客户端
    通过 docker 命令行工具或直接调用 REST API 与 Docker 守护进程通信。

  2. Docker 守护进程(dockerd)
    核心后台进程,负责管理镜像、容器、网络、数据卷等;
    接收客户端请求,并通过 containerd 管理容器生命周期;
    与镜像仓库交互,拉取或推送镜像。

  3. containerd
    工业级容器运行时管理器,负责镜像传输、存储和容器执行控制;
    它通过 containerd-shim 为每个容器创建一个垫片进程,保持容器独立运行;
    调用底层的 runc 真正创建和运行容器。

  4. runc
    轻量级命令行工具,根据 OCI(开放容器倡议)标准直接与 Linux 内核交互,创建容器的隔离环境。

  5. 镜像仓库
    存储 Docker 镜像的远程服务,默认是 Docker Hub,也可搭建私有仓库;
    守护进程和 containerd 均可从仓库拉取镜像到本地缓存。
    在这里插入图片描述

常用工具与生态

  • Docker Compose:通过 YAML 文件定义和运行多容器应用(如 Web 服务 + 数据库 + 缓存),适合本地开发和测试
version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
  • Docker Swarm:Docker 原生的容器编排工具,可将多个 Docker 主机组成集群,提供服务发现、负载均衡和伸缩能力
  • Docker Registry:用于存储和分发私有镜像,可自建(如 registry:2 镜像)或使用云服务商提供的镜像仓库
  • Kubernetes:业界主流的容器编排平台,Docker 可作为其容器运行时,与 Docker CLI 和镜像格式兼容

Docker 与虚拟机的区别

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐