Docker通过gRPC调用Containerd。Containerd主要由三部分组成: containerd-ctr,containerd-shim和containerd。其中container-ctr提供了操作containerd的命令行。所以,本次分析将介绍container-ctr命令行的使用。

准备

create the top most bundle directory

1
2
mkdir /mycontainer
cd /mycontainer

create the rootfs directory

1
mkdir rootfs

export busybox via Docker into the rootfs directory

1
docker export $(docker create nginx:v1) | tar -C rootfs -xvf -

启动containerd

启动的时候可以使用自己编译的containerd和containerd-shim,可以输出日志内容。当然也可以直接使用docker二进制包中的可执行文件。

./bin/containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock –shim /home/fankang/docker/containerd-0.2.4/src/github.com/docker/containerd/bin/containerd-shim –metrics-interval=0 –start-timeout 2m –state-dir /var/run/docker/libcontainerd/containerd –runtime docker-runc

containerd-ctr命令行

获取容器列表

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers list

获取具体容器

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers nginx

查看容器状态

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers state nginx

查看容器资源信息

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers stats nginx

创建容器

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers start nginx /home/fankang/mycontainer

在容器中执行命令

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers exec -id nginx --pid 4067 --cwd /bin --tty --attach ./date

其中,pid可以随便填写。

停止容器

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers unpause nginx

恢复容器

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers resume nginx

删除容器

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" containers kill nginx

获取版本

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" version

获取containerd的状态

1
docker-containerd-ctr --address "unix:///run/docker/libcontainerd/docker-containerd.sock" state

(注:这里docker-前缀是因为使用docker二进制包安装的containerd)

其他说明

Containerd目前已经迭代到v1.0.0-beta版本,功能已经包含镜像管理等。但0.2.4中只有容器管理的功能。