containerd
是一个高级容器运行时,通过守护进程来管理容器的完整生命周期:创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。
介绍
- docker 在底层使用
containerd
来运行容器
containerd
是从 docker
中拆分出来的。containerd
提供的功能包括:
- 镜像下载
- 镜像管理
- 创建管理容器(调用
Low-Level
的 runc
来完成),当从镜像创建容器时,首先将镜像解开成 OCI runtime bundle
,然后调用 runc
来运行容器
安装
加速
containerd 客户端
containerd 的客户端有:ctr、crictl、nerdctl
图片来自
命令 |
docker |
ctr(containerd) |
crictl(kubernetes) |
查看运行的容器 |
docker ps |
ctr task ls/ctr container ls |
crictl ps |
查看镜像 |
docker images |
ctr image ls |
crictl images |
查看容器日志 |
docker logs |
无 |
crictl logs |
查看容器数据信息 |
docker inspect |
ctr container info |
crictl inspect |
查看容器资源 |
docker stats |
无 |
crictl stats |
启动/关闭已有的容器 |
docker start/stop |
ctr task start/kill |
crictl start/stop |
运行一个新的容器 |
docker run |
ctr run |
无(最小单元为 pod) |
打标签 |
docker tag |
ctr image tag |
无 |
创建一个新的容器 |
docker create |
ctr container create |
crictl create |
导入镜像 |
docker load |
ctr image import |
无 |
导出镜像 |
docker save |
ctr image export |
无 |
删除容器 |
docker rm |
ctr container rm |
crictl rm |
删除镜像 |
docker rmi |
ctr image rm |
crictl rmi |
拉取镜像 |
docker pull |
ctr image pull |
ctictl pull |
推送镜像 |
docker push |
ctr image push |
无 |
登录或在容器内部执行命令 |
docker exec |
无 |
crictl exec |
清空不用的容器 |
docker image prune |
无 |
crictl rmi –prune |
ctr
ctr
是 containerd 项目的一部分,提供的命令行客户端
ctr + containerd
对标 docker + dockerd
# 拉取镜像
ctr images pull docker.io/library/nginx:1.21
ctr images pull quay.io/quay/redis:latest
# 列出本地镜像
ctr images ls
# containerd 不提供开箱即用的镜像构建支持,可以导入其他镜像
docker save -o nginx.tar nginx:1.21
ctr images import nginx.tar
# 挂载镜像文件到文件系统
mkdir nginx
ctr images mount docker.io/nginx:1.21 /tmp/nginx
# 取消挂载
ctr images unmount /tmp/ngin
# 删除镜像
ctr images remove docker.io/library/nginx:1.21
# 运行
# ctr run 实际上 ctr container create + ctr task start
ctr run --rm -t docker.io/library/nginx:1.21 bash
# 查看运行中的镜像
ctr containers ls
# 查看 task
ctr task ls
ctr task start -d nginx_1
# 重新连接到在容器内运行的任务
ctr task attach nginx_1
# create task
ctr task exec-t -- exec-id bash_1 nginx_1 bash
# 停止task
ctr task kill -9 nginx_1
ctr task rm -f nginx_1
# 删除容器
ctr container rm nginx_1
nerdctl
- nerdctl 是一个相对较新的 containerd 命令行客户端,目标是促进试验 Docker 中不存在的 containerd 的尖端功能
- nerdctl 尝试提供与 docker 相同用户体验的命令行工具
crictl
crictl 是 Kubernetes CRI 兼容容器运行时的命令行客户端