nerdctl是containerd的非核心子项目,nerdctl是一个与docker cli风格兼容的containerd的cli工具, 提高了直接将containerd作为本地开发、测试和单机容器部署使用的体验。
社区地址
https://pkg.go.dev/github.com/AkihiroSuda/nerdctl#section-readme
https://github.com/containerd/nerdctl
特点
- 与docker相同的体验
- 支持docker compose (nerdctl compose up)
- 支持rootless mode
- 支持lazy-puling 延迟拉取
- 支持image加密
与其他工具对比
ctr
与 Docker CLI 不兼容,对用户不友好。值得注意的是,ctr缺少以下 Docker CLI 命令:
- docker run -p <PORT>
- docker run --restart=always --net=bridge
- docker pull与~/.docker/config.json和凭证帮手二进制文件如docker-credential-ecr-login
- docker logs
crictl
与Docker CLI不兼容,对用户不友好,不支持非CRI特性
需要一个额外的守护进程,并且不支持非 CRI 特性
Rancher Kim (nee k3c v0.3) :
需要Kubernetes,只关注图像管理命令如kim build和kim push
PouchContainer (abandoned?) :
需要一个额外的守护进程
安装
mkdir /root/tools/nerdctl -p && cd /root/tools/nerdctl
wget https://github.com/containerd/nerdctl/releases/download/v0.11.1/nerdctl-0.11.1-linux-amd64.tar.gz
tar xf nerdctl-0.11.1-linux-amd64.tar.gz
mkdir /usr/local/containerd/bin/ -p
mv nerdctl /usr/local/containerd/bin/
ln -s /usr/local/containerd/bin/nerdctl /usr/local/bin/nerdctl
常用命令
#列出所有k8s容器
nerdctl --namespace k8s.io ps -a
#运行容器
nerdctl run --name=test2 -it -rm docker.io/library/redis:alpine3.1
nerdctl run --name=redis -d docker.io/library/redis:alpine3.13
#进入容器
nerdctl exec -it redis sh
#容器管理
nerdctl ps
nerdctl inspect
nerdctl logs
#容器构建
nerdctl port
nerdctl rm
nerdctl stop
nerdctl start
nerdctl kill
nerdctl pause
nerdctl unpause
nerdctl build
#镜像管理
nerdctl images
nerdctl pull
nerdctl push
nerdctl load
nerdctl save
nerdctl tag
nerdctl rmi
nerdctl image convert
#仓库登录
nerdctl login
nerdctl logout
#网络管理
nerdctl network create
nerdctl network ls
nerdctl network inspect
nerdctl network rm
#存储卷管理
nerdctl volume create
nerdctl volume ls
nerdctl volume inspect
nerdctl volume rm
#空间管理
nerdctl namespace ls
#系统管理
nerdctl events
nerdctl info
nerdctl version
总结,nerdctl就是contaienerd运行时的cli工具,与docekr-cli使用相似,可以用来进行一般的容器管理