首次使用containerd
为了更深入地理解Docker,似乎需要对containerd也有一定的了解,所以做个备忘录。
containerd 是什么
Docker社正在开发的容器运行时。
根据计划,将捐赠给一个开放的社区。
主要职责包括对正在运行的容器进行管理和监控,以及管理容器镜像(推送到注册表、拉取等)。
容器执行层的运行时目前使用的是runC,但计划允许使用任何符合OCI标准的运行时。
Docker和containerd
Docker是一个拥有所有必要功能的平台,用于使用容器。
containerd是实现Docker作为平台的组件之一。
如链接中的图所示,它充当容器运行时的角色。
containerd 和 runc
runC的角色分配与被称为相同容器运行时的位置图如链接所示。
开始
请按照 README 文件中的指示进行操作。只列举命令。
- install
从https://github.com/docker/containerd/releases进行二进制安装。
$ ctr --help
NAME:
ctr - High performance container daemon cli
USAGE:
ctr [global options] command [command options] [arguments...]
VERSION:
0.2.3
COMMANDS:
checkpoints list all checkpoints
containers interact with running containers
events receive events from the containerd daemon
state get a raw dump of the containerd state
version return the daemon version
help, h Shows a list of commands or help for one command
.
..
- OCI bundle作成
请参考 https://github.com/docker/containerd/blob/v0.2.x/docs/bundle.md。
$ mkdir -p redis/rootfs
$ docker pull redis
$ docker create --name tempredis redis
$ docker export tempredis | tar -C redis/rootfs -xf -
$ docker rm tempredis
$ vi redis/config.json // config file作成
省略。
$ sudo mv redis /containers/
- 実行
// containerdの実行
$ sudo containerd
// container実行
$ sudo ctr containers start redis /containers/redis
$ sudo ctr containers list
ID PATH STATUS PROCESSES
redis /containers/redis running init