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

51 lines
1.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 12.5 容器格式
### Docker 容器格式的演进
最初Docker 采用了 `LXC` 中的容器格式 0.7 版本以后开始去除 LXC 的依赖转而使用自行开发的 [libcontainer](https://github.com/docker/libcontainer)。从 1.11 开始,则进一步演进为使用 [runC](https://github.com/opencontainers/runc) 和 [containerd](https://github.com/containerd/containerd)。
### 关键组件说明
#### 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. 支持多种容器运行时选择