linux安装containerd和nerdctl

目前nerdctl最新版是2.3.5, containerd 2.0

nerdctl-full-2.3.5中包含了containerd 2.0,cni, nerdctl,所以直接下载这个包即可,如果nerdctl有更新,可以把以下代码中的2.3.5替换为对应版本号即可

对于root用户

wget https://gh-proxy.com/https://github.com/containerd/nerdctl/releases/download/v2.3.5/nerdctl-full-2.3.5-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local nerdctl-full-2.3.5-linux-amd64.tar.gz
sudo cp /usr/local/lib/systemd/system/*.service /etc/systemd/system/
sudo systemctl enable buildkit containerd
sudo systemctl start buildkit containerd

增加镜像仓库,路径不存在就手动创建

sudo nano /etc/containerd/certs.d/docker.io/hosts.toml

server = "https://docker.io"
[host."https://dockerproxy.net"]
  capabilities = ["pull", "resolve"]
[host."https://docker.m.daocloud.io"]
  capabilities = ["pull", "resolve"]

 

对于非root用户

wget https://gh-proxy.com/https://github.com/containerd/nerdctl/releases/download/v2.3.5/nerdctl-full-2.3.5-linux-amd64.tar.gz 
sudo tar Cxzvf /usr/local nerdctl-full-2.3.5-linux-amd64.tar.gz 
containerd-rootless-setuptool.sh install

ubuntu 24.04以上版本需要修改AppArmor配置

cat <,
include 

/usr/local/bin/rootlesskit flags=(unconfined) {
  userns,

  # Site-specific additions and overrides. See local/README for details.
  include   if exists 
}
EOT
sudo systemctl restart apparmor.service

  

如果提示exec: "newuidmap": executable file not found in $PATH. 则需要安装uidmap sudo apt-get install -y uidmap

如果提示Failed to start containerd.service: Unit dbus.socket not found. 则需要安装dbus-user-session sudo apt-get install -y dbus-user-session

增加的镜像仓库内容与root用户的一致,路径是~/.config/containerd/certs.d/docker.io/hosts.toml

注意,这个rootless-setuptool目前不支持centOS 7及其以下。

 

允许rootless使用80-10000端口 

编辑文件 sudo nano /etc/sysctl.d/99-rootless.conf

添加内容 net.ipv4.ip_unprivileged_port_start=80

ctrl+o  ctrl+x保存退出,然后应用配置 sudo sysctl --system

 

完成后nerdctl的使用方法就和docker基本一致

nerdctl compose与docker-compose 用法基本一致

 

自动补全

安装bash-completion

sudo apt install bash-completion 或 sudo yum install bash-completion

编辑~/.bashrc

nano ~/.bashrc

末尾加上 source <(nerdctl completion bash)

ctrl+o  ctrl+x保存退出, 生效新的.bashrc  source ~/.bashrc

然后就有nerdctl命令的tab补全了

 

卸载

清除所有镜像容器卷网络并卸载

nerdctl system prune
containerd-rootless-setuptool.sh uninstall

如果是root安装的记得加sudo,并根据最后输出的结果执行删除containerd的配置目录

posted @ 2022-01-10 16:12  turingguo  阅读(1543)  评论(0)    收藏  举报