Docker容器技术原理详解(图文全面总结)

Docker 是云原生最核心的内容,下满我就全面来详解Docker容器技术原理 @mikechen

Docker容器

Docker 是一个开源的容器化平台,让开发者可以把应用程序及其所有依赖。

Docker容器技术原理详解(图文全面总结)-mikechen

比如:代码、运行时、系统工具、系统库、配置文件等打包成一个轻量、可移植、可一致运行的容器(Container)。

一句话总结:Docker 让“我的电脑上能跑,到你电脑上也能跑,到生产环境也能跑”成为现实。

它极大解决了:“在我本地跑得好好的,到你机器上就出问题了”,这种经典的环境不一致问题。

 

Docker容器技术原理

Docker 并没有发明什么新技术,它只是将 Linux 既有的内核特性。

比如:Namespace, Cgroups, UnionFS通过更优雅的方式封装在了一起。

Namespace(命名空间)解决了隔离的问题,它让容器内的进程觉得自己拥有一个独立的 Linux 环境。

Docker容器技术原理详解(图文全面总结)-mikechen

内核目前提供了 6-7 种主要的 Namespace,它们共同构建了容器的“障眼法”:

PID Namespace: 让容器内的进程拥有独立的 PID 树。

Network Namespace: 独立的网卡、IP、路由表,实现容器的网络虚拟化。

Mount Namespace: 挂载点隔离,让容器看到的文件目录结构独立。

UTS Namespace: 独立的主机名(Hostname)和域名(Domain name)。

IPC Namespace: 隔离进程间通信(如信号量、共享内存)。

User Namespace: 独立的 UID/GID 映射。

 

Cgroups

Cgroups(Control Groups),负责对CPU、内存、块设备I/O、网络带宽等资源进行限制、配额与统计。

Cgroups 与 Namespace 结合,既保证了容器的隔离性,又实现了多租户环境下的资源公平与稳定性。

Docker容器技术原理详解(图文全面总结)-mikechen

其主要功能包括:

限制(limit):为容器分配上限,如内存上限、CPU share。

保护(isolation):防止单个容器耗尽宿主机资源。

控制(control):动态调整资源分配策略。

 

UnionFS:分层文件系统

UnionFS (Union File System) ,是 Docker 镜像实现的核心。

它是一种分层、轻量级、高性能的文件系统,支持将多个目录挂载到同一个虚拟文件系统下。

Docker容器技术原理详解(图文全面总结)-mikechen

分层镜像(layered images):镜像由只读层按顺序叠加,每一层记录增量变化,便于复用与节省存储。

写时复制(Copy-on-Write):容器对文件的写操作不直接修改只读层,而是将文件复制到可写层,保持镜像层不可变。

最终,UnionFS 与、 Namespace、Cgroups 配合,提供容器运行时的文件系统视图与持久化策略。

评论交流
    说说你的看法