Containerd配置镜像加速
参考文档
修改步骤
1. 修改Config.toml文件
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d" # 镜像地址配置文件
[plugins."io.containerd.grpc.v1.cri".registry.auths]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.headers]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
2. 创建相应目录
mkdir /etc/containerd/certs.d/docker.io -pv
3. 配置加速
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://xxxxxxxx.mirror.aliyuncs.com"]
capabilities = ["pull", "resolve"]
EOF
4. 重启Containerd
systemctl daemon-reload
systemctl restart containerd
5. 重新拉取镜像
# 使用 ctr 命令拉取镜像时不会生效
crictl pull docker.io/library/mysql:latest
配置镜像加速脚本
#!/usr/bin/env bash
# author: liy
# file: containerd_mirrors.sh
#
export PS4='\[\e[35m\]+ $(basename $0):${FUNCNAME}:$LINENO: \[\e[0m\]'
[ "$debug" == "true" -o "$debug" == "yes" ] && set -x
config_file="/etc/containerd/config.toml"
config_path='/etc/containerd/certs.d'
if [ ! -f "${config_file}" ];then
[ ! -d "${config_file%/*}" ] && mkdir -p ${config_file%/*}
lineno="$(containerd config default | grep -n -A 1 -P '(?<=\[plugins.")io.containerd.grpc.v1.cri(?=".registry])'|tail -1)"
lineno=${lineno/-*}
containerd config default | sed -e "${lineno}s@config.*@config_path = \"${config_path}\"@" |sed '/SystemdCgroup/s/false/true/' > $config_file
fi
[ ! -d "${config_path}" ] && mkdir -p ${config_path}
params="${@:-registry.k8s.io:k8s.m.daocloud.io docker.io:docker.m.daocloud.io gcr.io:gcr.m.daocloud.io k8s.gcr.io:k8s.m.daocloud.io quay.io:quay.m.daocloud.io}"
function content(){
printf 'server = "https://%s"\n' "${registry}"
printf '[host."https://%s"]\n' "${proxy_server}"
printf ' capabilities = ["pull", "resolve"]'
}
for param in ${params}
do
registry="${param/:*/}"
proxy_server="${param/*:/}"
hosts_path="$config_path/$registry"
[ ! -d "$hosts_path" ] && mkdir -p ${hosts_path}
content > $hosts_path/hosts.toml
done
# 默认加速 registry.k8s.io, docker.io, gcr.io, k8s.gcr.io
debug=true bash containerd_mirrors.sh