Docker工作原理详解(图解+秒懂+全面)

Docker是云原生核心,下面我重点详解Docker工作原理@mikechen

Docker

Docker ,是目前最流行的容器化平台。

它能将应用及其所有依赖打包成一个轻量级、可移植的“容器”,实现“一次构建,到处运行”。

Docker工作原理详解(图解+秒懂+全面)-mikechen

Docker 作为轻量级容器化平台,已成为现代软件交付与运维的基石。

其关键价值在于以隔离、可移植与高效的方式封装应用及其运行环境,促成持续集成与微服务架构的广泛采用。

 

Docker架构

Docker 采用客户端-服务器(C/S)架构,整体结构如下:

Docker工作原理详解(图解+秒懂+全面)-mikechen

Docker 采用客户端(CLI 或 API)与守护进程(dockerd)分离的设计。

客户端发出操作请求,守护进程负责镜像管理、容器调度与底层调用(内核接口、存储、网络)。

RESTful API 提供自动化与编排工具(如 Docker Compose、Kubernetes)的集成接口。

 

Docker工作原理

Docker 的工作原理可以概括为:它不是“虚拟出一台完整机器”。

而是利用宿主机内核提供隔离与资源控制能力,把应用、依赖和运行环境封装成一个轻量级容器。

Docker工作原理详解(图解+秒懂+全面)-mikechen

其核心技术主要是 Linux 的 namespace、cgroups 和分层文件系统。

再配合 Docker Engine 的客户端-守护进程架构来完成镜像构建、容器运行和分发管理 。

 

Namespace

负责“看起来像独立系统”,它把进程、网络、挂载点、用户、主机名等资源隔离开,让容器内进程以为自己在独立环境中运行 。

Namespaces 让一个进程“看不见”其他进程的资源,实现6 种隔离

Namespace 类型
作用
说明
PID
进程 ID 隔离
容器内 PID=1,独立进程树
Network
网络隔离
独立网卡、IP、端口、路由表
Mount (MNT)
文件系统挂载隔离
容器有自己的根目录
UTS
主机名/域名隔离
容器可设置独立 hostname
IPC
进程间通信隔离
独立信号量、消息队列
User
用户/组 ID 隔离
容器内 root ≠ 宿主机 root

cgroups

Namespaces 只负责“隔离看什么”,Cgroups 负责“能用多少”。

Docker工作原理详解(图解+秒懂+全面)-mikechen

它限制容器的 CPU、内存、IO、进程数等资源,避免某个容器把宿主机资源耗尽 。

关键参数示例:

  • cpu.cfs_quota_us:CPU 时间配额;
  • memory.limit_in_bytes:内存上限;
  • blkio.weight:块设备 I/O 权重;

 

Union FS / 分层文件系统

Docker工作原理详解(图解+秒懂+全面)-mikechen

负责“镜像可复用”,镜像由多层只读层叠加组成。

容器启动后再加一层可写层,因而能实现高效构建、共享与增量分发 。

libcontainer / runc

负责“真正创建容器”,Docker 最终会把容器创建动作交给底层运行时去调用内核能力。

完成 namespace、cgroups、rootfs 等配置 。

评论交流
    说说你的看法