install containerd:

#!/bin/bash
############################
#                          #
#    install containerd    #
#                          #
############################


export CNI_PLUGINS_URL="https://ghproxy.com/https://github.com/containernetworking/plugins/releases/download/v1.3.0/cni-plugins-linux-amd64-v1.3.0.tgz"
export CRI_CONTAINERD_URL="https://ghproxy.com/https://github.com/containerd/containerd/releases/download/v1.7.2/cri-containerd-cni-1.7.2-linux-amd64.tar.gz"
export CRICTL_URL="https://ghproxy.com/https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.24.2/crictl-v1.24.2-linux-amd64.tar.gz"

export CNI_PLUGINS_PACKAGE=`basename $CNI_PLUGINS_URL`
export CRI_CONTAINERD_PACKAGE=`basename $CRI_CONTAINERD_URL`
export CRICTL_PACKAGE=`basename $CRICTL_URL`


if [ ! -f $CNI_PLUGINS_PACKAGE ]; then
    wget $CNI_PLUGINS_URL;
fi

if [ ! -f $CRI_CONTAINERD_PACKAGE ]; then
    wget $CRI_CONTAINERD_URL;
fi

if [ ! -f $CRICTL_PACKAGE ]; then
    wget $CRICTL_URL;
fi


if [ -f $CNI_PLUGINS_PACKAGE ]; then
    mkdir -pv /etc/cni/{net.d,bin}
    tar -xf $CNI_PLUGINS_PACKAGE -C /opt/cni/bin/
fi

if [ -f $CRI_CONTAINERD_PACKAGE ]; then
    tar -xf $CRI_CONTAINERD_PACKAGE -C /
fi

if [ -f $CRICTL_PACKAGE ]; then
    tar -xf $CRICTL_PACKAGE -C /usr/bin/
fi

cat > /usr/lib/systemd/system/containerd.service <<EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target
EOF


cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
systemctl restart systemd-modules-load.service


cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl -p


mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

sed -i "s#SystemdCgroup\ \=\ false#SystemdCgroup\ \=\ true#g" /etc/containerd/config.toml
cat /etc/containerd/config.toml | grep SystemdCgroup

sed -i "s#registry.k8s.io#registry.aliyuncs.com/google_containers#g" /etc/containerd/config.toml
cat /etc/containerd/config.toml | grep sandbox_image

sed -i 's#config_path\ \=\ \"\"#config_path\ \=\ \"/etc/containerd/certs.d\"#g' /etc/containerd/config.toml
cat /etc/containerd/config.toml | grep certs.d


# 配置加速器
mkdir /etc/containerd/certs.d/docker.io -pv
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://hub-mirror.c.163.com"]
  capabilities = ["pull", "resolve"]
EOF


systemctl daemon-reload
systemctl enable containerd
systemctl restart containerd

config.toml:

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."nvcr.io"]
          endpoint = [
            "https://nvcr.m.daocloud.io",
            "https://gh-proxy.org/docker/nvcr.io"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
          endpoint = [
            "https://k8s.m.daocloud.io",
            "https://gh-proxy.org/docker/registry.k8s.io"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
          endpoint = [
            "https://ghcr.m.daocloud.io",
            "https://gh-proxy.org/docker/ghcr.io"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
          endpoint = [
            "https://gcr.m.daocloud.io",
            "https://gh-proxy.org/docker/gcr.io"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
          endpoint = [
            "https://k8s-gcr.m.daocloud.io",
            "https://gh-proxy.org/docker/k8s.gcr.io"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = [
            "https://docker.m.daocloud.io",
            "https://docker.nju.edu.cn",
            "http://hub-mirror.c.163.com",
            "https://gh-proxy.org/docker/docker.io"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
          endpoint = [
            "https://quay.m.daocloud.io",
            "https://gh-proxy.org/docker/quay.io"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."mcr.microsoft.com"]
          endpoint = [
            "https://mcr.m.daocloud.io",
            "https://gh-proxy.org/docker/mcr.microsoft.com"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.elastic.co"]
          endpoint = [
            "https://elastic.m.daocloud.io",
            "https://gh-proxy.org/docker/docker.elastic.co"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."public.ecr.aws"]
          endpoint = [
            "https://m.daocloud.io/public.ecr.aws",
            "https://gh-proxy.org/docker/public.ecr.aws"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.gitlab.com"]
          endpoint = [
            "https://m.daocloud.io/registry.gitlab.com",
            "https://gh-proxy.org/docker/registry.gitlab.com"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.access.redhat.com"]
          endpoint = [
            "https://m.daocloud.io/registry.access.redhat.com",
            "https://gh-proxy.org/docker/registry.access.redhat.com"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."container-registry.oracle.com"]
          endpoint = [
            "https://m.daocloud.io/container-registry.oracle.com",
            "https://gh-proxy.org/docker/container-registry.oracle.com"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.suse.com"]
          endpoint = [
            "https://m.daocloud.io/registry.suse.com",
            "https://gh-proxy.org/docker/registry.suse.com"
          ]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.opensuse.org"]
          endpoint = [
            "https://m.daocloud.io/registry.opensuse.org",
            "https://gh-proxy.org/docker/registry.opensuse.org"
          ]

    [plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming]
      tls_cert_file = ""
      tls_key_file = ""