nerdctl 配合 BuildKit 实现 OCI 生态指令
后知后觉 暂无评论

Docker 受到压力后将容器核心层剥离出来,改名 containerd 捐献给云原生基金会,而反直觉的是其操作逻辑与 Docker 存在很大的不同。

背景

为了让 Docker 用户也能快速兼容 containerd 的使用习惯,发布了一个名为 nerdctl 的子项目,旨在完全兼容 Docker 命令的操作逻辑,来操作 containerd

部署

首先安装 containerd,二进制安装还是使用仓库进行安装都可以,具体可参考文章 使用 containerd 作为 CR

安装 nerdctl

官方托管仓库下载二进制包。

wget https://github.com/containerd/nerdctl/releases/download/v1.x.x/nerdctl-1.x.x-linux-amd64.tar.gz
sudo tar Cxf /usr/local/bin nerdctl-1.6.2-linux-amd64.tar.gz

安装成功后检查版本

sudo nerdctl -v

安装 CNI 插件

如果不准备部署 Kubernetes,那么需要单独安装 CNI Plugins,从 官方托管仓库 下载二进制包。

CNI 插件的用途是使用类似 nerdctl run/network 等命令。

sudo mkdir -p /opt/cni/bin/
wget https://github.com/containernetworking/plugins/releases/download/v1.x.x/cni-plugins-linux-amd64-v1.x.x.tgz
sudo tar Cxf /opt/cni/bin cni-plugins-linux-amd64-v1.x.x.tgz

需要注意的是,如果在使用命令时报错

FATA[0000] failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: time="2023-10-30T03:20:42-04:00" level=fatal msg="failed to call cni.Setup: plugin type=\"bridge\" failed (add): failed to locate iptables: exec: \"iptables\": executable file not found in $PATH"

这是因为容器的网络层全部依赖宿主机的 iptables 实现,需要手动安装再尝试。

安装 BuildKit

nerdctl 在调用子命令 build 构建 OCI 镜像时,需要依赖 BuildKit 组件,这部分是可选的,如果有构建容器镜像的需求,则需要手动安装,从 官方托管仓库 下载二进制包。

wget https://github.com/moby/buildkit/releases/download/v0.x.x/buildkit-v0.x.x.linux-amd64.tar.gz

解压到系统目录

sudo tar Cxf /usr/local/ buildkit-v0.x.x.linux-amd64.tar.gz

获取服务守护单元

sudo install -m 0755 -d /usr/local/lib/systemd/system/
curl -s https://raw.githubusercontent.com/moby/buildkit/master/examples/systemd/system/buildkit.socket | sudo tee /usr/local/lib/systemd/system/buildkit.socket
curl -s https://raw.githubusercontent.com/moby/buildkit/master/examples/systemd/system/buildkit.service | sudo tee /usr/local/lib/systemd/system/buildkit.service

重载单元并启动

sudo systemctl daemon-reload
sudo systemctl enable --now buildkit.service

附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。