kubernetes自1.24之后,默认的容器运行时由docker变更为containerd。Containerd 是一个高效的容器运行时,它提供了一套完整的容器生命周期管理工具,使得开发者和运维人员能够更加轻松地管理容器。

基本命令

  • 检查版本

bash containerd --version

  • 启动 Containerd 服务

bash sudo systemctl start containerd

  • 停止 Containerd 服务

bash sudo systemctl stop containerd

  • 查看 Containerd 服务状态

bash sudo systemctl status containerd

使用 ctr 命令行工具

  • 列出所有命名空间

bash sudo ctr namespaces list

  • 创建命名空间

bash sudo ctr namespaces create my-namespace

  • 拉取镜像

bash sudo ctr images pull docker.m.daocloud.io/library/hello-world:latest

  • 列出所有镜像

bash sudo ctr images list

  • 导出镜像

bash sudo ctr images export hello-world.tar docker.m.daocloud.io/library/hello-world:latest

  • 导入镜像

bash sudo ctr images import hello-world.tar

  • 创建容器

bash sudo ctr run --rm --tty docker.m.daocloud.io/library/hello-world:latest my-container

  • 列出所有容器

bash sudo ctr containers list

  • 启动容器

bash sudo ctr tasks start my-container

  • 停止容器

bash sudo ctr tasks stop my-container

  • 删除容器

bash sudo ctr containers delete my-container

使用 crictl 命令行工具

  • 查看所有 Pod

bash sudo crictl pods

  • 查看所有容器

bash sudo crictl ps

  • 拉取镜像

bash sudo crictl pull docker.m.daocloud.io/library/hello-world:latest

  • 列出所有镜像

bash sudo crictl images

  • 运行容器

bash sudo crictl runp pod-config.jsonsudo crictl create pod-id container-config.json pod-config.jsonsudo crictl start container-id

  • 停止容器

bash sudo crictl stop container-id

  • 删除容器

bash sudo crictl rm container-id

日志查看

  • 查看容器日志

bash sudo ctr tasks logs my-container

  • 查看 containerd 服务日志

bash sudo journalctl -u containerd

常见问题处理

  • 无法启动容器

  • 检查镜像是否存在

    bash sudo ctr images list

  • 检查 containerd 服务状态

    bash sudo systemctl status containerd

  • 镜像拉取失败

  • 检查网络连接

  • 确认镜像名称和标签是否正确

  • 容器状态异常

  • 使用 ctr tasks list 查看容器状态

  • 使用 ctr tasks inspect 查看容器详细信息