Docker and container tools
Tools
containerd
- 容器管理, 通过 gRPC 接口提供了一系列的 API 来管理容器的生命周期 ,利用 Linux 的 namespace、cgroup 等技术来实现容器的隔离和资源限制。 Containerd 会为容器创建新的 namespace,包括 PID namespace、UTS namespace、IPC namespace 等, 通过 cgroup 为容器分配指定的 CPU、内存等资源。
- 镜像管理, Containerd 支持多种镜像存储后端,如 OverlayFS、Btrfs 等。它支持多种镜像仓库协议,如 Docker Registry V2 协议。
- 运行时环境创建, Containerd 遵循开放容器倡议(OCI)的运行时规范,通过与 OCI 兼容的运行时(如 runc)来创建和运行容器。在网络方面,它可以通过调用网络插件(如 CNI 插件)来为容器分配 IP 地址、设置网络路由等,使容器能够与宿主机和其他容器进行通信。对于存储,Containerd 可以将宿主机的目录或存储卷挂载到容器内,实现容器与宿主机之间的数据共享。
接口
- OCI - 开放容器倡议, runC
- CNI 容器网络接口
- CRI 容器运行时接口, container runtime interface, containerd, CRI-O ,
- CSI 容器存储接口
- CDI 容器设备接口
镜像
- 基于联合文件系统(UnionFS)。在 Containerd 中,常用的联合文件系统有 OverlayFS 和 Btrfs 等。AUFS
- OCI Distribution Specification, https://github.com/opencontainers/distribution-spec
安全性
- Seccomp:限制容器的系统调用。
- AppArmor:应用层访问控制。
