简单的nerdctl命令使用,操作手册

前语:

根据上一篇文章,我们能够将Containerd安装部署起来,接下来要探讨的是如何使用它,去pull,push镜像,start,stop容器等相关操作。Containerd默认提供的CLI工具是ctr,但是这个命令使用起来确实不太方便,而大牛们也注意到了这一点。

于是,nerdctl命令工具应运而生。

nerdctl是一个类似于Docker CLI的命令工具,用于管理和运行容器,它提供与Docker兼容的接口,并支持和containerd集成。

总之一句话:能够让你感受到使用docker命令时候的快感!对从docker迁到containerd的人非常友好(就比如我)。

nerdctl安装:

官网地址:“https://github.com/containerd/nerdctl

# 下载安装包
wget https://github.com/containerd/nerdctl/releases/download/v1.4.0/nerdctl-1.4.0-linux-amd64.tar.gz

# 解压
mkdir /root/nerdctl 
tar -zxvf nerdctl-1.4.0-linux-amd64.tar.gz -C /root/nerdctl
cd /root/nerdctl && ls
containerd-rootless-setuptool.sh  containerd-rootless.sh  nerdctl

# 安装
cp -a nerdctl /usr/local/nerdctl
> nerdctl --version
nerdctl version 1.4.0

之后,我们需要再安装buildkit命令,该命令会在使用Dockerfile构建时调用,否则构建镜像会失败

buildkit安装

官网地址:“Releases · moby/buildkit · GitHub”;该部分内容参考文章: https://www.jianshu.com/p/835179171609

# 下载安装包
wget https://github.com/moby/buildkit/releases/download/v0.11.6/buildkit-v0.11.6.linux-amd64.tar.gz

# 解压
tar -zxvf buildkit-v0.11.6.linux-amd64.tar.gz

# 安装
cp -a bin/buildctl /usr/local/bin/
> buildctl -version
buildctl github.com/moby/buildkit v0.11.6 2951a28cd7085eb18979b1f710678623d94ed578

# 配置systemd管理
vi /usr/lib/systemd/system/buildkitd.service
[Unit]
Description=/usr/local/bin/buildkitd
ConditionPathExists=/usr/local/bin/buildkitd
After=containerd.service

[Service]
Type=simple
ExecStart=/usr/local/bin/buildkitd
User=root
Restart=on-failure
RestartSec=1500ms

[Install]
WantedBy=multi-user.target

# 启动
systemctl daemon-reload && systemctl start buildkitd && systemctl enable buildkitd

命名空间

命名空间是一种隔离机制,用于将系统资源(如进程、文件系统、网络)对不同实体进行隔离,使它们在各自的环境中运行,互不干扰。

在使用nerdctl命令的使用,我们就可以将不同的资源放到不同的命名空间当中,进行隔离管理,比如镜像,容器等,使其资源,进程之间相互独立,互不影响,安全性和可靠性。

默认使用的是default命名空间:

# 查看有哪些命名空间
nerdctl namespace list (简写:nerdctl ns ls)
NAME        CONTAINERS    IMAGES    VOLUMES    LABELS
buildkit    1             2         0
default     1             4         0
# 当前环境是有两个命名空间,其中不同空间的资源是不同的,比如镜像:
》nerdctl -n default images
REPOSITORY 					TAG
busybox 					latest
mysql 						5.7
nginx 						latest

》nerdctl -n buildkit images
REPOSITORY 					TAG
busybox 					latest
nginx 						latest

# 由上可以看出,default命名空间下相比较于buildkit命名空间,多一个mysql:5.7的镜像。

操作手册

  1. 镜像下载

nerdctl pull nginx:latest # 默认从hub.docker.com上拉取
  1. 查看镜像

nerdctl -n default images 
  1. 运行容器

nerdctl run -d --name first_container -p 80:80 -v /logs:/usr/local/nginx/logs nginx:latest
  1. 进入容器

nerdctl exec -ti first_container bash
  1. 查看容器

nerdctl ps
CONTAINER ID    IMAGE                             COMMAND                   CREATED               STATUS    PORTS                 NAMES
548b031877be    docker.io/library/nginx:latest    "/docker-entrypoint.…"    About a minute ago    Up        0.0.0.0:80->80/tcp    first_container
  1. 容器详情

nerdctl inspect first_container
  1. 容器日志

nerdctl logs -f first_container
  1. 容器状态

nerdctl stats first_container
CONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT   MEM %     NET I/O         BLOCK I/O     PIDS
ce682d8a75d6   first_contai   0.00%     1.973MiB / 8EiB     0.00%     1.02kB / 612B   0B / 15.4kB   3
  1. 停止,启动,重启

nerdctl stop first_container
nerdctl start first_container
nerdctl restart first_container
  1. 杀死容器

nerdctl kill first_container
  1. 删除容器

nerdctl rm -f first_container
  1. 构建镜像

# 编写Dockerfile,内容如下:
FROM busybox:latest
RUN echo "I'm not interested in money" > /root/demo.txt
​
# 构建镜像
nerdctl build -t busybox:v1.0 ./
  1. 登录镜像仓库

# nerdctl login --username=吃不胖的鱼77 registry.cn-hangzhou.aliyuncs.com
Enter Password:
WARNING: Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
​
Login Succeeded
  1. 上传镜像

# 修改镜像tag
nerdctl tag busybox:latest registry.cn-hangzhou.aliyuncs.com/week123456/busybox:latest
# 上传镜像
nerdctl push registry.cn-hangzhou.aliyuncs.com/week123456/busybox:latest
  1. 打包镜像

nerdctl save -o mysql.tar.gz mysql:5.7
  1. 导入镜像

nerdctl load -i mysql.tar.gz

更多命令参数,详细见--help显示。

结语

nerdctl秉承了docker命令的操作方法,使用起来确实很方便,不单单仅是方面罗列的功能,还包括volume卷,网络操作,甚至支持docker-compose的编写,调试kubernetes等。综合来看,nerdctl是一个可行的容器管理工具,某种意义上也是Docker命令工具的一种替代品。

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维炒酸奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值