podman在Windows下更换registry镜像的方法

802 阅读1分钟

在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下,完成这个设置的方法会稍微麻烦一些,大概是这样的:

  1. 进入通过ssh进入podman的machine
podman.exe machine ssh
  1. 在machine内,用vi等编辑/etc/containers/registry.conf,加入相关的配置
  2. 不需要重启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: ""
  1. 最后说明一下,如何确认镜像是不是有效的,因为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镜像的方法。