如何配置containerd使用registry镜像?

问题描述 投票:0回答:2

如果系统(例如 kubernetes 节点)正在使用

containerd
,如何配置它以从 registry 镜像而不是
docker.io
提取容器映像?

containerd docker-registry-mirror
2个回答
5
投票

答案似乎取决于版本,但对于 1.6+:

首先,确保

/etc/containerd/config.toml
设置:

plugins."io.containerd.grpc.v1.cri".registry.config_path = "/etc/containerd/certs.d"

其次,创建

/etc/containerd/certs.d/docker.io/hosts.toml
(并根据需要插入目录),其中包含以下内容:

server = "https://registry-1.docker.io"  # default after trying hosts
host."https://my-local-mirror".capabilities = ["pull", "resolve"]

(修改第一个文件后可能需要重新启动containerd?

systemctl restart containerd
第二个路径的更新应该无需重新启动即可检测到。)

请注意,早期版本 1.4(例如,几个月前在 amazon-eks-ami 中)使用了完全不同的方法来配置镜像。


如果这些更改是自动化的,例如在启动模板用户数据脚本中,则命令可能如下。请注意引号的转义,以及管道的哪一侧需要额外的权限。

sudo mkdir -p /etc/containerd/certs.d/docker.io
echo 'plugins."io.containerd.grpc.v1.cri".registry.config_path = "/etc/containerd/certs.d"' | sudo tee -a /etc/containerd/config.toml
printf 'server = "https://registry-1.docker.io"\nhost."http://my-local-mirror".capabilities = ["pull", "resolve"]\n' | sudo tee /etc/containerd/certs.d/docker.io/hosts.toml
sudo systemctl restart containerd

对于更新的安装,可能不需要修改

config.toml
(即如果默认值已正确设置)。此外,可能不需要使用
sudo
,具体取决于这些命令的运行位置(例如在 AWS EC2 的启动模板中)。


-1
投票

你知道我们如何在 Windows 容器上做到这一点吗?

© www.soinside.com 2019 - 2024. All rights reserved.