最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Docker 容器核心原理架构如何学
时间:2026-08-06 13:40:49 编辑:袖梨 来源:一聚教程网
Docker容器核心原理是:通过Namespace实现进程、网络、文件系统等资源的逻辑隔离,利用Cgroups对CPU、内存等物理资源进行硬性限制,并借助UnionFS分层存储与Copy-on-Write机制实现镜像高效复用和容器读写分离。
Docker 容器核心原理架构不是靠死记命令学出来的,而是靠理解“它在操作系统里到底干了什么”来掌握的。关键不在于背组件名字,而在于看清三层逻辑:隔离怎么实现、资源怎么限制、文件怎么存。
Namespace 是容器隔离的起点
容器不是虚拟机,它本质是宿主机上的一组进程,只是被 Linux 内核“藏起来了”。Namespace 就是这个“藏”的机制。
-
pidnamespace 让容器里看到的 1 号进程就是自己,不是宿主机的 systemd 或 init -
netnamespace 给容器配独立的网卡、IP、端口空间,所以多个 nginx 容器能同时监听 80 端口而不冲突 -
mntnamespace 控制挂载点,容器里df -h显示的磁盘和宿主机完全不同 -
uts和ipc分别隔离主机名、域名与进程通信通道,避免命名污染和意外干扰
你不需要手动创建 namespace,但可以用 unshare --pid --net /bin/bash 命令临时启一个带隔离的 shell,进去看看 /proc/self/ns/ 下的符号链接,就明白 Docker 在背后做了什么。
Cgroups 是容器不抢资源的保障
隔离解决“看不见”,Cgroups 解决“用不了太多”。
-
docker run -m 512m --cpus=0.5这类参数,最终都会转化成对 cgroup v2 目录(如/sys/fs/cgroup/memory/docker/xxx/)的写入 - 内存限制不是“软提醒”,超限时内核会直接 OOM kill 容器进程
- CPU 限制靠
cpu.weight(cgroup v2)或cpu.shares(v1),控制的是调度器分配时间片的权重,不是硬核数绑定
可以进容器执行 cat /sys/fs/cgroup/cpu.max 或 cat /sys/fs/cgroup/memory.max,看到的数值就是 Docker 给你设的上限——这就是真实生效的地方。
镜像分层和容器读写层是存储高效的关键
镜像不是打包压缩包,而是一堆只读层叠在一起,启动容器时再加一层可写层。
- 每条
RUN、COPY指令生成一个新层,层与层之间通过overlay2的lowerdir、upperdir、merged三目录联动 - 修改文件时触发 Copy-on-Write:原文件从只读层复制到 upperdir 再改,不影响其他容器
-
docker history nginx:alpine能看到每一层的大小和构建指令,帮你判断哪步臃肿了
删掉容器后,只要没被其他镜像引用,它的 upperdir 就自动清理;基础镜像层则被所有容器共享——这才是镜像体积小、启动快的底层原因。
不复杂但容易忽略
相关文章
- 鹅鸭杀超级金水铃模式怎么玩 08-07
- 牧场物语风之繁华集市生日日期怎么看 08-07
- 口袋新旅途如何捕捉颓颓鹰 08-07
- DNF狄瑞吉版本女漫游加点攻略 08-07
- 鹅鸭杀士兵怎么玩 08-07
- DNF狄瑞吉版本协战师加点攻略 08-07