一、为什么 nerdctl 很适合日常使用¶
很多人第一次接触 Containerd 时,会先被 ctr 的命令风格劝退。nerdctl 的价值就在于:
- 语法风格非常接近 Docker
- 支持镜像、容器、日志、拷贝、构建等常用操作
- 更适合作为单机日常管理和实验工具
因此它常被称为 Containerd 环境里的“Docker 风格 CLI”。
二、如何安装 nerdctl¶
原始笔记里的安装方式非常直接:
- 从 GitHub 发布页下载对应平台安装包
- 解压后把二进制放到系统路径
下载页:
https://github.com/containerd/nerdctl/releases
安装示例:
tar xf nerdctl-2.0.3-linux-amd64.tar.gz
mv nerdctl /usr/local/bin/
安装完成后,先用版本命令确认:
nerdctl version
相关下载界面:

三、nerdctl 和 Docker 的最大区别是什么¶
Day006 里给出的总结很准确:nerdctl 和 Docker 的命令区别其实不大,最明显的差异是 nerdctl 经常需要通过 -n 指定命名空间。
例如:
default是默认命名空间- Kubernetes 常用
k8s.io - 你也可以像示例里一样使用
test
这意味着当你看不到镜像或容器时,先别急着怀疑命令错了,先确认自己是不是在正确的命名空间里操作。
四、nerdctl 常见容器操作怎么做¶
4.1 创建并运行容器¶
nerdctl -n test run -d -p 80:80 --name=nginx --restart=always nginx:1.21.6
4.2 查看容器¶
nerdctl -n test ps
nerdctl -n test ps -a
4.3 查看和进入容器¶
nerdctl -n test inspect nginx
nerdctl -n test exec -it nginx bash
4.4 启停和删除容器¶
nerdctl -n test stop nginx
nerdctl -n test start nginx
nerdctl -n test rm nginx
这一整套使用体验和 Docker 非常相似,因此上手成本比 ctr 小很多。
五、nerdctl 常见镜像操作怎么做¶
5.1 查看、拉取和删除镜像¶
nerdctl -n test images
nerdctl -n test pull registry.cn-hangzhou.aliyuncs.com/zq-demo/nginx:1.21.6
nerdctl -n test rmi 10.0.0.13/public/nginx:1.21.6
5.2 给镜像打标签¶
nerdctl -n test tag registry.cn-hangzhou.aliyuncs.com/zq-demo/nginx:1.21.6 10.0.0.13/library/nginx:1.21.6
5.3 保存和加载镜像¶
nerdctl -n test save -o nginx-1.21.6.tar nginx:1.21.6
nerdctl -n k8s.io load -i nginx-1.21.6.tar
这说明 nerdctl 不仅适合日常拉取运行镜像,也很适合做离线镜像迁移。
六、容器文件、日志和构建也可以直接做¶
6.1 宿主机与容器之间复制文件¶
nerdctl -n test cp nginx:/usr/share/nginx/html/index.html /tmp/
nerdctl -n test cp /tmp/index.html nginx:/etc/index.html
6.2 查看容器日志¶
nerdctl -n test logs -f nginx
6.3 通过 Dockerfile 构建镜像¶
nerdctl build -t myapp:v1 -f Dockerfile .
这里要注意,构建通常需要依赖 buildkitd。
七、如何用 nerdctl 登录仓库并推送镜像¶
示例里使用了 Harbor 仓库,基本动作与 Docker 类似:
先登录:
nerdctl login http://10.0.0.13:80 -u admin --insecure-registry
然后推送:
nerdctl -n test push --insecure-registry 10.0.0.13:80/project001/nginx:1.21.6
退出登录:
nerdctl logout http://10.0.0.13:80
这里同样建议实际使用时把密码现场输入或通过安全方式传递,不要把固定密码硬编码到可发布文章里。
八、什么时候用 nerdctl,什么时候用 ctr¶
这两个工具不是互相替代,而是更适合不同场景:
8.1 更适合用 nerdctl 的场景¶
- 日常容器管理
- 想保持接近 Docker 的使用习惯
- 做镜像拉取、运行、日志查看、文件拷贝
8.2 更适合用 ctr 的场景¶
- 调试 Containerd 底层状态
- 处理命名空间、镜像挂载、底层导入导出
- 排查运行时内部问题
换句话说:
nerdctl更像日常工作台ctr更像底层维修工具
九、学 nerdctl 最值得记住的一句话¶
如果只记一句最实用的话,那就是:
把它当成“Containerd 环境里的 Docker CLI”,但永远别忘了命名空间。
这句话几乎能覆盖 nerdctl 学习中的最大特点和最大坑点。只要把这点牢记,Containerd 的日常使用体验会顺很多。