Docker运行原理详解(图解+秒懂+全面)

Docker是云原生的核心,也是大厂必备技能,下面我就全面来详解Docker运行原理@mikechen

Docker

Docker 是一个基于 容器技术(Container) 的轻量级虚拟化平台,用于 打包、分发和运行应用。

Docker运行原理详解(图解+秒懂+全面)

核心优势:

轻量:启动快,资源占用少;

一致性:从开发到生产环境一致;

可移植:一次打包,到处运行;

高效部署:支持 CI/CD 快速上线。

 

Docker架构

Docker 采用典型的 C/S(客户端-服务端)架构,核心由三部分组成:

Docker运行原理详解(图解+秒懂+全面)

1️⃣ Docker Client(客户端)

用户操作的入口(命令行 docker 或 API 调用)。

负责发送指令给 Docker Daemon,比如构建镜像、运行容器。

2️⃣ Docker Daemon(守护进程)

运行在宿主机上的核心服务(dockerd)。

负责真正的镜像管理、容器创建、网络和存储操作。

3️⃣ Docker Registry(镜像仓库)

用于存储和分发镜像。

官方为 Docker Hub,也可以搭建私有仓库(Harbor)。

 

Docker核心技术

Docker 的底层依赖 Linux 内核的几大特性,实现「隔离」「控制」「分层」三大核心能力:

Docker运行原理详解(图解+秒懂+全面)

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运行原理详解(图解+秒懂+全面)

理解 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面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧