ctr 容器工具详解:原理、用法与实战
ctr 容器工具详解:原理、用法与实战
作者:一缘(zhuty.com)
一、ctr 工具简介
ctr 是 containerd 的原生命令行工具,用于直接操作和管理容器、镜像、快照、命名空间等底层资源。相比 Docker CLI,ctr 更加轻量、贴近底层,常用于容器运行时调试、Kubernetes 集成、CI/CD 自动化等场景。
- containerd 是 CNCF 毕业项目,Docker 的核心容器运行时。
- ctr 是 containerd 自带的 CLI,适合开发者和运维人员做底层容器管理。
二、ctr 与 Docker 的关系
- Docker 早期架构 = Docker CLI + Docker Daemon + containerd + runc
- 现代云原生体系下,Kubernetes、CRI-O、containerd 等直接调用 containerd 作为容器运行时
- ctr 只操作 containerd,不负责镜像构建、网络、编排等高级功能
- 适合底层调试、自动化脚本、K8s 集成等
三、ctr 安装与环境准备
containerd 安装后自带 ctr 工具。常见安装方式:
# Ubuntu
sudo apt-get install containerd
# 或用二进制包
wget https://github.com/containerd/containerd/releases
查看 ctr 版本:
ctr version
四、ctr 常见命令与用法
1. 镜像管理
# 拉取镜像
sudo ctr image pull docker.io/library/nginx:latest
# 查看本地镜像
sudo ctr images ls
# 删除镜像
sudo ctr images rm docker.io/library/nginx:latest
2. 容器生命周期管理
# 创建容器(不会自动启动)
sudo ctr container create docker.io/library/nginx:latest mynginx
# 启动容器
sudo ctr task start -d mynginx
# 查看运行中的容器
sudo ctr task ls
# 停止容器
sudo ctr task kill mynginx
# 删除容器
sudo ctr container rm mynginx
3. 进入容器/执行命令
# 进入容器交互终端
sudo ctr task exec --exec-id 1 -t mynginx /bin/sh
4. 命名空间操作
containerd 支持多命名空间隔离,默认 namespace 为 default
。
# 查看所有命名空间
sudo ctr namespaces ls
# 指定命名空间操作
sudo ctr --namespace k8s.io images ls
五、实战案例:用 ctr 管理 Nginx 容器
- 拉取镜像
sudo ctr image pull docker.io/library/nginx:latest
- 创建并启动容器
sudo ctr container create docker.io/library/nginx:latest mynginx
sudo ctr task start -d mynginx
- 查看容器状态
sudo ctr task ls
- 进入容器
sudo ctr task exec --exec-id 1 -t mynginx /bin/sh
- 停止并删除容器
sudo ctr task kill mynginx
sudo ctr container rm mynginx
六、适用场景与最佳实践
- K8s/云原生环境下底层容器调试
- 自动化脚本批量管理容器
- 镜像分发、命名空间隔离
- 生产环境建议用 containerd API 或 K8s 管理,ctr 适合调试和特殊场景
- 注意 ctr 不负责网络、存储等高级功能
七、总结
ctr 是 containerd 的底层利器,适合有容器底层管理需求的开发者和运维人员。建议日常用 Docker/K8s 管理容器,遇到底层问题或需自动化时用 ctr 直连 containerd,效率极高。
如需更多 ctr 实战案例或遇到问题,欢迎留言交流!