1 首先下载Containerd完整包
Containerd项目地址:https://github.com/containerd/containerd
下载containerd安装包
mkdir containerd
cd containerd
wget https://github.com/containerd/containerd/releases/download/v1.5.7/cri-containerd-cni-1.5.7-linux-amd64.tar.gz
tar -zxvf cri-containerd-cni-1.5.7-linux-amd64.tar.gz
删除不必要的文件
rm -rf path/containerd/etc/cni
rm -rf path/containerd/opt
注意一定不要删除/etc 和 /opt目录 要删除containerd文件夹下的etc/cni和opt目录
复制配置文件
cp -r path/containerd/etc /
cp -r path/containerd/opt /
创建默认配置文件
mkdir /etc/containerd
containerd config default > /etc/containerd/config.yoml
启动containerd
systemctl start containerd
systemctl enable containerd
拉取镜像
以redis为例
ctr i pull docker.io/library/redis:latest 因为默认ctr不会从docker的镜像仓库拉取.所以我们指定仓库链接
ctr run -d -t docker.io/library/redis:latest
查看运行的容器
ctr c ls 查看已创建的容器
CONTAINER IMAGE RUNTIME
redis docker.io/library/redis:latest io.containerd.runc.v2
ctr t ls 查看已运行的容器
TASK PID STATUS
redis 22829 RUNNING
报错异常解决
如果运行容器时报错
ctr: failed to create shim: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/default/nginx/log.json: no such file or directory): runc did not terminate successfully: exit status 127: runc: symbol lookup error: runc: undefined symbol: seccomp_api_get
解决方法如下:
wget https://github.com/seccomp/libseccomp/releases/download/v2.5.2/libseccomp-2.5.2.tar.gz
tar -zxvf libseccomp-2.5.2.tar.gz
cd libseccomp-2.5.2
./configure --prefix=/usr --disable-static
make && make install
yum -y install libseccomp libseccomp-devel