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