深入Docker架构------C/S模式解析
- 一:核心概念
-
- [1.1 架构概览](#1.1 架构概览)
- [1.2 核心组件详解](#1.2 核心组件详解)
-
- [1)Docker Client(客户端)](#1)Docker Client(客户端))
- [2)Docker Daemon(守护进程/服务器)](#2)Docker Daemon(守护进程/服务器))
- [3)Docker Registry(镜像仓库)](#3)Docker Registry(镜像仓库))
- 二:工作流程
-
- [2.1 完整命令执行流程](#2.1 完整命令执行流程)
- [2.2 各阶段详细说明](#2.2 各阶段详细说明)
- 总结
🎯 系列介绍
🔔 本文是 《Docker实战入门与部署指南:从核心概念到网络与数据管理》 系列的第四篇!
本系列将从零开始,带你系统性地学习 Docker 的核心概念、安装部署、容器管理、镜像制作、数据持久化与网络配置,最终具备构建和运维容器化应用的能力。
⚠️ 该系列所有涉及的配置脚本、Dockerfile示例和离线安装包都可以私信博主免费获取。
📚 系列篇章总览
-
第一章:初识Docker------概念与优势
核心: 理解Docker是什么,它与传统虚拟机的本质区别,以及为何要使用容器化技术。 -
第二章:环境准备与Docker安装
核心: 掌握在CentOS系统上搭建Docker运行环境,从操作系统准备到Docker CE的安装、配置与优化。 -
第三章:Docker基础操作------镜像与容器管理
核心: 理解Docker是什么,它与传统虚拟机的本质区别,以及为何要使用容器化技术。 -
第四章:深入Docker架构------C/S模式解析
核心: 理解Docker客户端与守护进程如何协同工作,这是掌握Docker运行原理和高级管理(如远程连接)的基础 -
第五章:自定义镜像制作------从Dockerfile到镜像
核心: 掌握制作自定义镜像的四种方式,重点学习使用Dockerfile进行标准化、可复用的镜像构建。 -
第六章:数据持久化------Volume与Bind Mount
核心:解决容器内数据易失性问题,学习如何通过Volume和绑定挂载实现数据的持久化存储与跨容器共享。 -
第七章:容器网络配置------从互联到自定义桥接
核心: 掌握容器间的通信方式,学习默认Bridge、Host网络,并最终通过自定义网络和Pipework实现容器与宿主机网络的无缝集成。
🚀 系列最终成果
当你完整学完并实操本系列,你将拥有:
✅ 扎实的Docker理论基础,清晰理解容器、镜像、仓库等核心概念。
✅ 独立部署Docker环境的能力,并完成常用配置优化(如镜像加速)。
✅ 熟练的容器与镜像管理技能,能够进行日常的运维操作。
✅ 制作自定义业务镜像的能力,为应用容器化打下基础。
✅ 解决数据持久化问题的方案,确保应用数据安全。
✅ 配置复杂容器网络的能力,实现容器内外的灵活通信。
真正实现: 概念理解 → 环境搭建 → 日常操作 → 镜像定制 → 数据管理 → 网络配置,一站式掌握Docker核心技能。
一:核心概念
1.1 架构概览
Docker 采用 客户端-服务器(Client/Server)模式,主要分为两个部分:
- Docker Client(客户端)
- 你在命令行或脚本里运行的
docker命令 - 负责 接收用户操作指令,发送给 Docker Daemon
- 可以在本机,也可以远程连接 Docker Host
- 你在命令行或脚本里运行的
- Docker Daemon(服务器 / docker engine)
- 背后的守护进程
dockerd - 负责 容器生命周期管理
- 创建容器
- 启动 / 停止 / 删除容器
- 镜像拉取 / 构建 / 删除
- 网络 / 存储管理
- 接收客户端请求,通过 REST API 执行
- 背后的守护进程

1.2 核心组件详解

1)Docker Client(客户端)
功能职责:
- 接收用户输入的命令(
docker run,docker build等) - 解析并验证命令参数
- 通过 REST API 将请求发送到 Docker Daemon
- 接收响应并格式化输出给用户
通信方式:
- 默认使用 Unix 套接字:
/var/run/docker.sock - 支持 TCP 连接进行远程管理
- 支持 HTTP/HTTPS 协议
2)Docker Daemon(守护进程/服务器)
核心进程:
dockerd
主要职责:
- 镜像管理(拉取、构建、存储、分发)
- 容器生命周期管理(创建、启动、停止、删除)
- 网络管理(网络创建、连接、配置)
- 数据卷管理(创建、挂载、备份)
- 接收并处理客户端的 REST API 请求
关键特性:
- 常驻内存的守护进程
- 支持插件化架构(网络驱动、存储驱动、日志驱动等)
- 提供 RESTful API 接口
3)Docker Registry(镜像仓库)
作用:
存储和分发 Docker 镜像
分类:
公共仓库:
- Docker Hub(默认)
- Quay.io
- 阿里云镜像服务等
私有仓库:
- Harbor
- Docker Registry
- Nexus Repository等
二:工作流程
2.1 完整命令执行流程
以下以 docker run -d --name web -p 80:80 nginx:latest命令为例,详细解析执行流程:
- Docker Client
- 解析命令
- 打包请求,发送给 Docker Daemon(默认 Unix socket
/var/run/docker.sock或 TCP)
- Docker Daemon
- 接收请求
- 拉取镜像(如果本地不存在)
- 创建容器(分配 namespace、cgroup)
- 启动容器主进程
- 返回执行结果给 Client
- Docker Client
- 显示日志 / 输出给用户
- 维持交互(
-it交互模式)

2.2 各阶段详细说明
1)阶段1:客户端处理(1-3步)
bash
# 客户端实际执行的API调用
curl --unix-socket /var/run/docker.sock \
-X POST "http:/v1.41/containers/create?name=web" \
-H "Content-Type: application/json" \
-d '{
"Image": "nginx:latest",
"HostConfig": {
"PortBindings": {"80/tcp": [{"HostPort": "80"}]}
}
}'
2)守护进程处理(4-9步)
- 请求验证:检查API版本、参数合法性
- 镜像检查 :检查本地
/var/lib/docker/image/overlay2/repositories.json - 镜像拉取:如果镜像不存在,从Docker Hub拉取
- 容器配置 :
- 网络配置:创建veth pair,连接到docker0网桥
- 存储配置:创建容器可写层
- 资源限制:设置cgroup参数
3)阶段3:容器运行时创建(10-13步)
- Container调用 :通过gRPC调用containerd的
create方法 - Runc执行 :调用
runc create命令 - 内核交互 :
unshare():创建新的命名空间mount():挂载rootfscgroupfs:设置资源限制
- 进程启动:执行容器入口点(nginx)
总结
一句话总结:Docker采用经典的客户端-服务器架构,dockerd守护进程通过REST API接收客户端指令,完成从镜像拉取到容器运行的全生命周期管理。
理解Docker的C/S架构是掌握容器化技术的基础,为后续学习Kubernetes等编排工具打下坚实基础。掌握Daemon配置和远程访问安全,能显著提升企业级容器环境的管理能力。