Docker是云原生的核心,也是大厂必备技能,下面我就全面来详解Docker运行原理@mikechen
Docker
Docker 是一个基于 容器技术(Container) 的轻量级虚拟化平台,用于 打包、分发和运行应用。

核心优势:
轻量:启动快,资源占用少;
一致性:从开发到生产环境一致;
可移植:一次打包,到处运行;
高效部署:支持 CI/CD 快速上线。
Docker架构
Docker 采用典型的 C/S(客户端-服务端)架构,核心由三部分组成:

1️⃣ Docker Client(客户端)
用户操作的入口(命令行 docker 或 API 调用)。
负责发送指令给 Docker Daemon,比如构建镜像、运行容器。
2️⃣ Docker Daemon(守护进程)
运行在宿主机上的核心服务(dockerd)。
负责真正的镜像管理、容器创建、网络和存储操作。
3️⃣ Docker Registry(镜像仓库)
用于存储和分发镜像。
官方为 Docker Hub,也可以搭建私有仓库(Harbor)。
Docker核心技术
Docker 的底层依赖 Linux 内核的几大特性,实现「隔离」「控制」「分层」三大核心能力:

1.Namespaces —— 实现进程隔离(Isolation)
为每个容器提供独立的系统视图,让容器内的进程彼此“看不见”。
| Namespace | 隔离内容 | 示例 |
|---|---|---|
| PID | 进程编号隔离 | 每个容器拥有独立的进程树 |
| NET | 网络隔离 | 独立的虚拟网卡、IP、路由 |
| MNT | 文件系统挂载隔离 | 容器挂载独立目录结构 |
| UTS | 主机名与域名隔离 | 容器拥有自己的主机名 |
| IPC | 进程通信隔离 | 不同容器间的消息队列独立 |
| USER | 用户隔离 | 容器内可映射不同的 UID |
2.Cgroups —— 实现资源控制(Resource Control)
限制、隔离和统计容器对系统资源(CPU、内存、I/O 等)的使用。
示例能力:
限制某容器最多使用 2 CPU、1GB 内存;
控制容器 I/O 读写速率;
防止容器抢占宿主机所有资源。
3.UnionFS —— 实现镜像分层(Layering)
通过“分层文件系统(Union File System)”叠加多个只读层,实现高效镜像复用。
基础层:Ubuntu系统文件 中间层:安装Python 上层:应用代码 最上层:容器运行时可写层
Docker运行流程

理解 Docker 运行机制,可以从 镜像 → 容器 → 进程运行 的完整生命周期来看:
1️⃣ 镜像构建(Image Build)
基于 Dockerfile 构建分层镜像,每一层代表一次文件系统变更(如添加文件、执行命令)。
通过 UnionFS 合并多层,最终形成只读镜像。
2️⃣ 容器启动(Container Run)
Docker Daemon 基于镜像创建容器层(可写层),为容器分配独立的 Namespace 与 Cgroups。
通过 runc ,启动容器主进程(PID 1)
容器内的所有操作都受, Namespace 隔离和 Cgroups 控制。
3️⃣ 容器运行(Runtime)
容器中的进程与宿主机共享内核,但被逻辑隔离。
4️⃣ 容器销毁(Stop / Remove)
结束容器主进程后,Cgroups 资源释放。
可写层被移除,镜像层依然保留。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!
后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》