目录
一、什么是容器?
1.容器技术的本质
1.1 Namespace
1.2 Cgroups
2.容器运行时
3.容器镜像
4.容器技术并非 Docker 独有
5.为什么要用容器?
二、什么是 Docker?
1.Linux 的 Namespace、CGroups 和 UnionFS 三大技术支撑了 Docker 的实现。
1.1 Namespace(命名空间)
1.2 CGroups(Control Group 控制组)
1.3 UnionFS(联合文件系统)
2.Docker 的核心组件
2.1 Image 镜像
2.2 Container 容器
2.3 Repository 仓库
3.Docer 和 Overlay2、UnionFS
一、什么是容器?
容器(Container)是一种轻量级的虚拟化技术,核心目标是通过 “隔离” 和 “打包”,让应用程序及其依赖(代码、运行时、库、配置等)能够在独立、一致的环境中运行,且与宿主环境和其他应用互不干扰。
1.容器技术的本质
容器 = CGroup + Namespace + Rootfs + 容器引擎。
容器就是利用 Linux 内核提供的 CGroup 和 Namespace 等技术,将一系列进程隔离在相互独立的环境中进行运行。
在现代的 Linux 发行版中,任何一组进程都是容器化的:/proc/PID/cgroup 文件保存了进程所属的控制组。/proc/PID/status 文件保存了进程的 Capability 信息。
/proc/PID/ns 保存了进程的命名空间。
1.1 Namespace
实现 “资源隔离”,让容器内的应用看到的是独立的进程 ID、网络栈、文件系统、用户空间。
1.2 Cgroups
实现 “资源限制”,为容器分配固定的 CPU、内存、磁盘 I/O 配额。
2.容器运行时
负责容器生命周期的核心工具,分为低层运行时(如runC)和高层运行时(如Containerd)。低层运行时直接调用内核创建隔离环境,高层运行时负责镜像管理、网络等完整功能。





