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:应用层访问控制。