containerd是Docker的底层,使用nerdctl(containerd非核心子项目)可以实现95%兼容Docker的容器管理,相较于Docker更为简洁高效,且安装简单
1.0 使用 uname -a
确认linux版本>4.x,否则很多镜像无法安装,实测腾*云的centos8.4甚至是linux2.x
本教程仅测试了Amd64下的Centos8.3 Centos8.4
1.1.安装nerdctl+containerd(以下所有代码请将linux-amd64替换为实际架构)
#国内使用(不保证可用性)wget http://orange.woc.asia:9099/nerdctl/nerdctl-full-0.16.0-linux-amd64.tar.gz
wget https://github.com/containerd/nerdctl/releases/download/v0.16.0/nerdctl-full-0.16.0-linux-amd64.tar.gz
tar -zxvf nerdctl-full-0.16.0-linux-amd64.tar.gz
mv bin/* /usr/local/bin/
mv lib/* /usr/local/lib/
mv libexec/* /usr/local/libexec/
mv share/* /usr/local/share/
1.2.下载网络管理插件
#国内使用(不保证可用性)wget http://orange.woc.asia:9099/cni-plugin/cni-plugin-flannel-linux-amd64-v1.0.1.tgz
wget https://github.com/flannel-io/cni-plugin/releases/download/v1.0.1/cni-plugin-flannel-linux-amd64-v1.0.1.tgz
tar -zxvf cni-plugin-flannel-linux-amd64-v1.0.1.tgz
mkdir -p /opt/cni/bin/
cp flannel-* /opt/cni/bin/
cp /opt/cni/bin/flannel-amd64 /opt/cni/bin/flannel
1.3.启用网桥(centos8.3需要)
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
modprobe br_netfilter
sysctl -p
2.启动服务(仅限使用systemctl)
cp /usr/local/lib/systemd/system/*.service /etc/systemd/system/
systemctl enable buildkit containerd
systemctl start buildkit containerd
3.nerdctl pull Centos(国内镜像)
nerdctl pull daocloud.io/library/centos:latest
4.启动容器
持久后台运行
nerdctl run -d --privileged --name=【改为容器名】 --restart=always -p 外网端口:内网端口 daocloud.io/library/centos /usr/sbin/init
或前台持久运行(通过nohup、systemctl管理)
nerdctl run -i --privileged --name=【改为容器名】 --restart=always -p 外网端口:内网端口 daocloud.io/library/centos /usr/sbin/init
注:和docker一样如需使用systemctl必须加入--privileged和/usr/sbin/init
5.进入容器
nerdctl exec -it 【改为容器名】 bash
使用 exit / ctrl+d 退出容器
常用命令
nerdctl ps -a 查看容器
nerdctl rm 【容器id】 删除容器
nerdctl version 查看版本
其余命令基本与docker兼容,可参考菜鸟教程或github,两者镜像通用,国内可使用daocloud的加速镜像服务。
性能对比