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
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2023-11-01 09:28 AM