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
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中只有容器管理的功能。