原文:
容器运行时顾名思义就是要掌控容器运行的整个生命周期,以 docker 为例,其作为一个整体的系统,主要提供的功能如下:
- 制定容器镜像格式
- 构建容器镜像
docker build
- 管理容器镜像
docker images
- 管理容器实例
docker ps
- 运行容器
docker run
- 实现容器镜像共享
docker pull/push
Docker、Google等开源了用于运行容器的工具和库 runc,作为 OCI 的一种实现参考。在此之后,各种运行时工具和库也慢慢出现,例如 rkt、containerd、cri-o 等,然而这些工具所拥有的功能却不尽相同,有的只有运行容器(runc、lxc),而有的除此之外也可以对镜像进行管理(containerd、cri-o)。目前较为流行的说法是将容器运行时分成了 low-level 和 high-level 两类。
low-level: 指的是仅关注运行容器的容器运行时,调用操作系统,使用 namespace 和 cgroup 实现资源隔离和限制。high-level: 指包含了更多上层功能,例如 grpc调用,镜像存储管理等。
不同工具的关系如下图: