如果系统(例如 kubernetes 节点)正在使用
containerd
,如何配置它以从 registry 镜像而不是 docker.io
提取容器映像?
答案似乎取决于版本,但对于 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 的启动模板中)。
你知道我们如何在 Windows 容器上做到这一点吗?