Containerd命令行工具nerdctl

Containerd 客户端工具 nerdctl

相比Containerd自带的ctr工具,nerdctl操作方式更接近之前的docker命令。nerdctl 是一个与 docker cli 风格兼容的 containerd 客户端工具,而且直接兼容docker compose的语法的。

仓库:https://github.com/containerd/nerdctl

1. 安装

二进制文件下载路径:https://github.com/containerd/nerdctl/releases

nerdctl 官方发布包含两个安装版本:

  • Minimal:仅包含 nerdctl 二进制文件及 rootless 模式下的辅助安装脚本;
  • Full:全量包,其中包含了 Containerd、CNI、runc、BuildKit 等完整组件。
wget https://github.com/containerd/nerdctl/releases/download/v2.0.0-beta.5/nerdctl-2.0.0-beta.5-linux-amd64.tar.gz
mkdir nerdctl
tar xf nerdctl-2.0.0-beta.5-linux-amd64.tar.gz -C nerdctl/
mv ./nerdctl/nerdctl /usr/bin/nerdctl

# 检查安装
root@master1:~# nerdctl version
WARN[0000] unable to determine buildctl version: exec: "buildctl": executable file not found in $PATH
Client:
 Version:       v2.0.0-beta.5
 OS/Arch:       linux/amd64
 Git commit:    9236b9370203b7f3274ae8d1417cc6ddcbdd4511
 buildctl:
  Version:

Server:
 containerd:
  Version:      1.7.12
  GitCommit:
 runc:
  Version:      1.1.12-0ubuntu3

2. nerdctl使用

2.1 可以将nerdctl更名为docker

# 创建docker执行文件,确保nerdctl路径正确
root@master1:~# cat << 'EOF' > /usr/local/bin/docker
#!/bin/bash
/usr/local/bin/nerdctl $@
EOF

root@master1:~# chmod +x /usr/local/bin/docker

这样就可以把使用docker作为命令了。

2.2 nerdctl bash自动补全

root@master1:~ # apt install bash-completion
root@master1:~ # nerdctl completion bash > /etc/bash_completion.d/nerdctl
root@master1:~ # source /etc/bash_completion.d/nerdctl

# 如果遇到如下问题,执行souce命令解决
root@master1:~# nerdctl image_get_comp_words_by_ref: command not found
_get_comp_words_by_ref: command not found
_get_comp_words_by_ref: command not found
^C

root@master1:~# source /usr/share/bash-completion/bash_completion

# 写入.bashrc文件
echo "source /etc/bash_completion.d/nerdctl" >> ~/.bashrc
echo "source /usr/share/bash-completion/bash_completion" >> ~/.bashrc

2.3 nerdctl在k8s下使用

k8s默认使用k8s.io,而 nerdctl 默认使用default namspace。如果需要查看 k8s 相关镜像需要加上"--namespace=k8s.io"来指定。

# 打印k8s相关容器
nerdctl --namespace k8s.io ps -a

# 镜像列表
nerdctl images --namespace=k8s.io
nerdctl -n=k8s.io images

# 构建镜像
nerdctl --namespace k8s.io build -t nginx:nerdctl .

或者在 nerdctl 配置文件中指定nerdctl 默认使用 k8s.io namespace

root@master1:~# mkdir  /etc/nerdctl/
root@master1:~# cat >> /etc/nerdctl/nerdctl.toml << EOF
namespace = "k8s.io"
EOF

3. 容器管理

运行容器:

root@master1:~# nerdctl images | grep nginx
nginx    1.27.0             91bb02101775    20 hours ago    linux/amd64    192.8 MiB    182.9 MiB

# 运行容器
root@master1:~# nerdctl run -d -p 80:80 --name=nginx --restart=always nginx:1.27.0
f506dd37ea00a8f2581cfefec977d4189774960fe1ffe6567632ee331af80c78

# 进入容器
root@master1:~# nerdctl exec -it nginx /bin/bash
root@f506dd37ea00:/#

# 查看容器列表
root@master1:~# nerdctl ps
CONTAINER ID    IMAGE                                                                      COMMAND                   CREATED          STATUS    PORTS                 NAMES
0417a801d4e7    registry.cn-hangzhou.aliyuncs.com/chenby/pause:3.8                         "/pause"                  3 hours ago      Up                              k8s://kube-system/kube-proxy-m6z76
...

# 获取容器的详细信息
root@master1:~# nerdctl inspect nginx
[
    {
   
        "Id": "f506dd37ea00a8f2581cfefec977d4189774960fe1ffe6567632ee331af80c78",
        "Created": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lldhsds

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

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

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

打赏作者

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

抵扣说明:

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

余额充值