在podman的文档中,更换registry的下载镜像的方法是编辑/etc/containers/registry.conf
,针对对应的registry增加如下的配置(以docker.io为例,更换为网易的源):
[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
location = "hub-mirror.c.163.com"
在Windows下,完成这个设置的方法会稍微麻烦一些,大概是这样的:
- 进入通过ssh进入podman的machine
podman.exe machine ssh
- 在machine内,用vi等编辑
/etc/containers/registry.conf
,加入相关的配置 - 不需要重启podman machine,可以直接podman info检查设置是否生效,大概是可以在info中看到下面的一票东西就是设置成功了
registries:
docker.io:
Blocked: false
Insecure: false
Location: docker.io
MirrorByDigestOnly: false
Mirrors:
- Insecure: false
Location: hub-mirror.c.163.com
PullFromMirror: ""
- 最后说明一下,如何确认镜像是不是有效的,因为podman在pull镜像的时候会依次尝试连接每一个镜像,如果镜像全部连接失败,还是会从
[[registry]]
配置的location来拉取镜像。可以在podman machine内部(也就是通过podman machine ssh进入后再使用podman,否则日志会输出不全)加--log-level trace
来pull一个镜像试试,在日志中可以看到连接镜像的输出
DEBU[0000] GET https://hub-mirror.c.163.com/v2/
DEBU[0000] Ping https://hub-mirror.c.163.com/v2/ status 200
如果镜像连接失败的话,日志输出大概是这样的
DEBU[0000] GET https://dockerhub.azk8s.cn/v2/
DEBU[0000] Ping https://dockerhub.azk8s.cn/v2/ status 403
DEBU[0000] GET https://dockerhub.azk8s.cn/v1/_ping
DEBU[0000] Ping https://dockerhub.azk8s.cn/v1/_ping status 403
DEBU[0000] Accessing "dockerhub.azk8s.cn/pingcap/tidb:latest" failed: pinging container registry dockerhub.azk8s.cn: invalid status code from registry 403 (Forbidden)
以上就是在Windows下更换podman的registry镜像的方法。