Docker是如何工作的?这篇底层原理讲透了!

云原生是大型架构核心,下面我详解Docker底层原理@mikechen

Docker核心技术

Docker 是一种容器化技术,本质上是利用 Linux 内核特性在宿主机上运行多个隔离的、轻量级的“容器”。

Docker是如何工作的?这篇底层原理讲透了!-mikechen

其核心依赖 Linux 的三大技术:Namespaces(命名空间)、Cgroups(控制组) 和 UnionFS(联合文件系统)。

这些技术共同实现了容器的隔离、资源限制和镜像分层。

 

Namespaces(命名空间)

Docker 利用 Namespace 为每个容器构建了一个个独立的“平行世界”。

Docker是如何工作的?这篇底层原理讲透了!-mikechen

Linux 命名空间(如 PID、NET、MNT、UTS、IPC、USER 等)为每个容器创建独立的视图。

比如:

PID Namespace: 容器里的进程以为自己是 1 号进程(PID 1),实际上在宿主机眼里它只是一个普通进程。

Network Namespace: 每个容器有自己的虚拟网卡、IP 地址和路由表,互不干扰。

Mount Namespace: 容器只能看到自己挂载的文件系统,看不见宿主机的根目录。

使容器内进程拥有独立的进程树、网络栈、挂载点和主机名等资源视图。

 

Cgroups(控制组)

其次,控制组(cgroups)负责资源限制、与管理。

Cgroups 允许对 CPU、内存、磁盘 I/O、网络带宽等进行配额与限制。

Docker是如何工作的?这篇底层原理讲透了!-mikechen

比如:

CPU(限制使用率)、Memory(限制内存 + OOM 控制)、BlkIO(磁盘 I/O)、Net(网络优先级)等。

确保单个容器,不会耗尽宿主机资源。

 

UnionFS(联合文件系统)

UnionFS(Union File System),允许将多个目录联合挂载到一个虚拟文件系统中。

Docker是如何工作的?这篇底层原理讲透了!-mikechen

Docker 镜像由多个只读层组成,基于联合文件系统(如 overlayfs、aufs 等)将这些层合并为单一视图。

启动容器时,Docker 在只读层之上添加一个可写层(容器层)。

采用写时复制(copy-on-write)策略以节省存储与加速镜像分发。

该分层设计使镜像共享基础层变得高效,便于构建、分发与版本管理。

mikechen睿哥

10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。

评论交流
    说说你的看法