云原生是大型架构核心,下面我详解Docker底层原理@mikechen
Docker核心技术
Docker 是一种容器化技术,本质上是利用 Linux 内核特性在宿主机上运行多个隔离的、轻量级的“容器”。

其核心依赖 Linux 的三大技术:Namespaces(命名空间)、Cgroups(控制组) 和 UnionFS(联合文件系统)。
这些技术共同实现了容器的隔离、资源限制和镜像分层。
Namespaces(命名空间)
Docker 利用 Namespace 为每个容器构建了一个个独立的“平行世界”。

Linux 命名空间(如 PID、NET、MNT、UTS、IPC、USER 等)为每个容器创建独立的视图。
比如:
PID Namespace: 容器里的进程以为自己是 1 号进程(PID 1),实际上在宿主机眼里它只是一个普通进程。
Network Namespace: 每个容器有自己的虚拟网卡、IP 地址和路由表,互不干扰。
Mount Namespace: 容器只能看到自己挂载的文件系统,看不见宿主机的根目录。
使容器内进程拥有独立的进程树、网络栈、挂载点和主机名等资源视图。
Cgroups(控制组)
其次,控制组(cgroups)负责资源限制、与管理。
Cgroups 允许对 CPU、内存、磁盘 I/O、网络带宽等进行配额与限制。

比如:
CPU(限制使用率)、Memory(限制内存 + OOM 控制)、BlkIO(磁盘 I/O)、Net(网络优先级)等。
确保单个容器,不会耗尽宿主机资源。
UnionFS(联合文件系统)
UnionFS(Union File System),允许将多个目录联合挂载到一个虚拟文件系统中。

Docker 镜像由多个只读层组成,基于联合文件系统(如 overlayfs、aufs 等)将这些层合并为单一视图。
启动容器时,Docker 在只读层之上添加一个可写层(容器层)。
采用写时复制(copy-on-write)策略以节省存储与加速镜像分发。
该分层设计使镜像共享基础层变得高效,便于构建、分发与版本管理。
mikechen睿哥
10年+一线大厂架构实战经验,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。