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 兼容容器运行时的命令行客户端