Docker是云原生的核心,也是大厂必备技能,下面我就全面来详解Docker核心原理@mikechen
Docker核心原理
Docker ,是一个 开源的应用容器引擎。
让开发者可以把应用程序和依赖环境,打包在一个“容器(Container)”中,一次构建,到处运行。

Docker容器核心原理,可以从「架构组成 → 核心技术 → 运行流程」三层来理解。
Docker架构
Docker架构,如下图所示:

+-----------------------+
| Docker Client |
| (CLI / REST API) |
+----------+------------+
|
v
+-----------------------+
| Docker Daemon |
| (dockerd 守护进程) |
|-----------------------|
| containerd + runc |
|-----------------------|
| 网络 / 存储 / 构建 |
+----------+------------+
|
v
+-----------------------+
| Docker Registry |
| (Docker Hub / 私有) |
+-----------------------+
Docker的核心组件包括:
Docker Client:命令行工具(docker run、docker build);
Docker Daemon(dockerd):守护进程,负责容器创建、镜像管理;
Containerd / runc:真正负责容器生命周期和底层运行;
Image Registry:镜像仓库(如 Docker Hub / Harbor)。
Docker核心技术
Docker 能实现“秒级启动 + 高隔离 + 高复用”,依赖三大 Linux 核心特性。

Linux Namespaces (命名空间)
提供进程级隔离,让每个容器像独立系统。
PID:进程隔离;
NET:独立网络栈;
MNT:文件系统隔离;
UTS:主机名隔离;
IPC:进程间通信隔离;
每个容器看到的都是自己的进程、文件、网络环境。
Linux Cgroups (控制组)
限制容器使用的, CPU、内存、IO 等资源,防止容器抢占宿主机资源
docker run -m 512m --cpus=1 nginx
控制容器使用的 CPU、内存、I/O、网络带宽 等资源。
防止某个容器“吃光资源、拖垮系统”。
UnionFS (联合文件系统)
通过“分层文件系统”,实现镜像快速构建与共享。
镜像由多层只读层组成,每一层都可被其他镜像复用,容器运行时在最上层叠加一层可写层。
FROM ubuntu:20.04 ← 基础层 RUN apt install nginx ← 第二层 RUN echo "Hello" > /index.html ← 第三层
Docker运行流程

Docker运行流程,如下:
1️⃣ CLI解析命令 Docker CLI 通过 REST API 调用本地 Docker Daemon。 2️⃣ Daemon调用Containerd 守护进程接收到请求后,交给 containerd 创建容器。 3️⃣ Containerd 调用 runc containerd 使用 runc 创建容器进程,调用 Linux 内核能力(Namespaces + Cgroups)。 4️⃣ runc 创建隔离环境 runc 基于镜像内容挂载文件系统(UnionFS),设置隔离空间(Namespace),限制资源(Cgroups)。 5️⃣ 启动容器主进程 runc 启动用户定义的应用(如 nginx),容器正式运行。 6️⃣ Docker Daemon 持续监控容器 容器运行时状态、资源、网络由 Docker Daemon 统一管理。
总之,Docker通过“Namespace隔离 + Cgroups限流 + UnionFS分层”,实现了轻量级的进程级虚拟化。
mikechen睿哥
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。