实验环境:centos7.7.1908
参考文档:
containerd (nerdctl) 依赖项 |无根容器 (rootlesscontaine.rs)
构建 Moby (Docker) 并单独运行 runc 和 containerd 来了解容器的基础知识 (zenn.dev)
首先根据文档1下载nerdctl
wget https://github.com/containerd/nerdctl/releases/download/v1.6.2/nerdctl-full-1.6.2-linux-amd64.tar.gz
tar -xzf nerdctl-full-1.6.2-linux-amd64.tar.gz
设置普通用户testuser
useradd -m -s /bin/bash testuser
su testuser
然后在本终端设置环境变量,之后按照文档1执行 containerd-rootless-setuptool.sh install
export PATH=$PATH:/containerd/bin
containerd-rootless-setuptool.sh install
然后根据文档2的提示,直接运行containerd-rootless.sh
在root下执行yum install iproute -y,然后重新运行
上面这个错误好像是没有设置cni网络导致的,但是后面我设置了一下cni网络还是存在这个错误
然后重启一个终端运行一个容器试一下
nerdctl run hello-world
接下来要根据文档3配置一下cni网络,不过上面的错误信息提示要把cni放到/opt/cni/bin下,这个操作的citrix中/opt我没有写权限
在root下执行相关操作
wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-arm64-v1.1.1.tgz
tar xvf cni-plugins-linux-arm64-v1.1.1.tgz -C cni/
cd cni/
然后在root用户下把cni放到/opt/cni/bin下试一下
mkdir -p /opt/cni/bin
cp * /opt/cni/bin/
[testuser@e8d55414b4ef /]$ nerdctl run hello-world
FATA[0000] failed to mount /run/user/1000/containerd-mount2759511587: operation not permitted
这个问题网上没有找到解决方案。上面下载的cni需要放到/opt/cni/bin下,在citrix中不知道可不可以。
通过查阅,上述问题可能与主目录的文件系统有关,以下配置可能有效
nerdctl run --snapshotter=fuse-overlayfs
--snapshotter=native
举例
nerdctl run -it --snapshotter=fuse-overlayfs --snapshotter=native 50752af5182c
还有上述cni网络的路径问题,可以通过 CNI_PATH来指定路径,比如
export CNI_PATH=/containerd
echo $CNI_PATH
上述指定路径到/containerd,然后把cni的配置就可以直接配置到/containerd下,不用再配置到/opt/cni/bin下了。