Files
docker_practice/12_implementation/12.5_container_format.md
2026-03-05 19:24:01 -08:00

1.6 KiB
Raw Blame History

12.5 容器格式

Docker 容器格式的演进

最初Docker 采用了 LXC 中的容器格式。从 0.7 版本以后开始去除 LXC 的依赖,转而使用自行开发的 libcontainer。从 1.11 开始,则进一步演进为使用 runCcontainerd

关键组件说明

LXCLinux 容器)

Docker 早期版本0.1-0.7)直接使用 LXC 作为容器运行时,利用 Linux Namespaces 和 Cgroups 实现容器隔离。

libcontainer

  • Docker 自行开发的容器库
  • 提供了容器的通用接口
  • 不依赖于特定的 Linux 容器实现
  • 更灵活和可控

runC

  • OCIOpen Container Initiative标准实现
  • 轻量级的容器运行时
  • 独立的二进制文件,可单独使用
  • 基于 libcontainer 发展而来

containerd

  • Docker 开源的容器运行时
  • 提供了容器的完整生命周期管理
  • 支持 runC 和其他 OCI 兼容的运行时
  • 在 Kubernetes 等编排系统中广泛使用

容器规范标准

Docker 积极参与 Open Container Initiative (OCI) 的制定,推动了以下规范的发展:

  • Image Spec:容器镜像格式规范
  • Runtime Spec:容器运行时接口规范
  • Distribution Spec:容器镜像分发规范

架构演变的优势

从 LXC → libcontainer → runC/containerd 的演变提供了以下优势:

  1. 减少外部依赖
  2. 提高运行效率
  3. 遵循行业标准OCI
  4. 增强可移植性和互操作性
  5. 支持多种容器运行时选择