# Containerd 常用命令

# 1. 安装 Containerd

1.1 配置安装源

yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.2 安装 docker-ce、containerd

yum install docker-ce containerd -y

可以无需启动 Docker,只需要配置和启动 Containerd 即可。

1.3 配置 Containerd 所需的模块

# cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

1.4 加载模块

# cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

1.5 配置 Containerd 所需的内核

# cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

1.6 加载内核

sysctl --system

1.7 生成 Containerd 的配置文件

mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml

1.8 更改 Containerd 的 Cgroup 和 Pause 镜像

sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
sed -i 's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml
sed -i 's#registry.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml
sed -i 's#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g'  /etc/containerd/config.toml

1.9 启动 Containerd,并配置开机自启动

systemctl daemon-reload
systemctl enable --now containerd
systemctl status  containerd 

# 2. Containerd 配置镜像加速

打开 /etc/containerd/config.toml 文件,找到 [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 部分,添加所需的镜像源配置

# vim /etc/containerd/config.toml
#添加以下配置镜像加速服务
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = [
      "https://docker.io",
      "https://6qxc6b6n.mirror.aliyuncs.com",
      "https://docker.m.daocloud.io",
      "https://dockerproxy.com/"
    ]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
    endpoint = [
      "https://gcr.m.daocloud.io",
      "https://gcr.nju.edu.cn",
      "https://gcr.dockerproxy.com"
    ]

重新启动 Containerd

systemctl daemon-reload
systemctl restart containerd

# 3. Containerd 常用操作命令实践

# 3.1 查看 Containerd 命名空间

namespace 来于指定类似于工作空间的隔离区域

[root@k8s-node02 ~]# ctr namespace ls 
NAME    LABELS 
default        
k8s.io         
moby 
# 3.2 查看 Containerd 镜像

因为没有指定 namespace,所以查看的是默认命名空间下的镜像

ctr images ls

查看指定命名空间 k8s.io 下的镜像

ctr -n k8s.io images ls
# 3.3 拉取 Containerd 镜像

拉取指定命名空间 k8s.io 镜像 pause-amd64:3.2

 ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/pause-amd64:3.2
 ctr -n k8s.io images pull docker.io/library/nginx:1.21
# 3.4 删除 containerd 镜像
ctr -n k8s.io images rm registry.aliyuncs.com/google_containers/pause-amd64:3.2
# 3.5 导出 Containerd 镜像
ctr -n k8s.io images export pause.tar.gz registry.aliyuncs.com/google_containers/pause-amd64:3.2
# 3.6 导入 Containerd 镜像
ctr -n k8s.io image import pause.tar.gz

docker save -o 命令导出来的镜像可以用 ctr images import 导出,同理 ctr images export 导出来的镜像也可以有 docker load 还原。

# 3.7 标记 Containerd 镜像
ctr -n k8s.io images tag registry.aliyuncs.com/google_containers/pause-amd64:3.2 pause:3.2
# 3.8 运行 Containerd 容器

在后台运行一个 centos 镜像的容器,名称叫做 centos_k8s

 ctr -n k8s.io  run -d  docker.io/library/nginx:1.21 web
# 3.9 查看运行容器的 task
ctr -n k8s.io task ls
# 3.10 启动指定容器 task
ctr -n k8s.io task start -d centos_k8s
# 3.11 进入指定容器 task
ctr -n k8s.io task exec --exec-id 3118 -t web /bin/bash
# 3.12 删除指定容器 task
ctr -n k8s.io task rm -f web
# 3.13 停止指定容器 task
ctr -n k8s.io task kill --signal 9 centos_k8s
# 3.14 查看容器
ctr -n k8s.io c list
# 3.15 删除容器
ctr -n k8s.io c rm centos

删除容器以前需要将 task 删除,不然会报以下错误

[root@k8s-node02 ~]# ctr -n k8s.io c rm web 
ERRO[0000] failed to delete container "web"              error="cannot delete a non stopped container: {running 0 0001-01-01 00:00:00 +0000 UTC}"
ctr: cannot delete a non stopped container: {running 0 0001-01-01 00:00:00 +0000 UTC}

# 4. Docker 与 Containerd 常用命令对比

说明docker 命令containerd 命令
查看本地镜像docker imagesctr images ls
拉取镜像docker pull imagenamectr images pull imagename
推送镜像docker push imagenamectr images push imagename
给镜像打标签docker tag imagename tagnamectr images tag imagename tagname
导出镜像docker save filename imagenamectr images export filename imagename
导入镜像docker load filenamectr image import filename
运行并创建容器docker run [options] imagename commondctr run [options] imagenamecontainername
进入容器docker exec [options] names commondctr task exec [options] names commond
查看运行的容器docker psctr task list
删除容器docker rm [options] names1.ctr task rm -f names 2. ctr c rm -f names
此文章已被阅读次数:正在加载...更新于

请我喝[茶]~( ̄▽ ̄)~*

Xu Yong 微信支付

微信支付

Xu Yong 支付宝

支付宝