nerdctl是containerd的非核心子项目,nerdctl是一个与docker cli风格兼容的containerd的cli工具, 提高了直接将containerd作为本地开发、测试和单机容器部署使用的体验。

云计算-nerdctl工具_Docker

社区地址

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使用相似,可以用来进行一般的容器管理