Podman 配置国内镜像

📅 2026/7/8 10:15:47 👁️ 阅读次数 📝 编程学习
Podman 配置国内镜像

文章目录

  • 背景
  • 前置条件
  • 可用镜像源
  • 操作步骤
    • 1. 进入虚拟机
    • 2. 切换 root(推荐)
    • 3. 备份原配置(如果有的话)
    • 4. 写入镜像配置
    • 5. 退出虚拟机并重启
    • 6. 验证配置是否生效
  • 故障排查

背景

Podman 默认从 Docker Hub(docker.io)拉取镜像,在国内访问经常超时或速度极慢。在 macOS / Windows 上,Podman 运行在虚拟机(podman machine)中,镜像配置必须在虚拟机内部完成,而非宿主机。

前置条件

  • 安装 podman 与 podman-compose
  • 已初始化 Podman Machine:podman machine init
  • 虚拟机已启动:podman machine start

可用镜像源

镜像源地址备注
DaoClouddocker.m.daocloud.io老牌镜像,稳定性好
1msdocker.1ms.run速度较快
腾讯云mirror.ccs.tencentyun.com腾讯云内网更快
阿里云registry.cn-hangzhou.aliyuncs.com需注册获取专属加速地址
中科大docker.mirrors.ustc.edu.cn教育网友好

操作步骤

以下🏠 宿主机📦 虚拟机标签区分命令执行位置。

1. 进入虚拟机

# 🏠 宿主机podmanmachinesshpodman-vm

2. 切换 root(推荐)

# 📦 虚拟机sudo-i

3. 备份原配置(如果有的话)

# 📦 虚拟机cp/etc/containers/registries.conf /etc/containers/registries.conf.bak2>/dev/null

4. 写入镜像配置

方式一:一键写入(推荐)

# 📦 虚拟机(root)cat>/etc/containers/registries.conf<<'EOF' unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "docker.io" [[registry.mirror]] location = "docker.m.daocloud.io" [[registry.mirror]] location = "docker.1ms.run" [[registry.mirror]] location = "mirror.ccs.tencentyun.com" EOF

unqualified-search-registries指定当镜像名不含 registry 前缀时默认搜索的仓库,设为docker.io即可兼容docker pull nginx这类用法。

方式二:手动编辑

# 📦 虚拟机vi/etc/containers/registries.conf

5. 退出虚拟机并重启

# 📦 虚拟机exit# 退出 rootexit# 退出虚拟机(回到宿主机)
# 🏠 宿主机podmanmachine stoppodmanmachine start

6. 验证配置是否生效

# 🏠 宿主机podmaninfo--format'{{json .registries}}'|python3-mjson.tool

或简化版:

podmaninfo|grep-A10"registries"

看到配置的镜像地址即表示生效。可以拉一个镜像测试速度:

podmanpull alpine

故障排查

现象可能原因解决
配置后仍走 Docker Hub未重启虚拟机执行podman machine stop && podman machine start
registries.conf不存在目录或文件未创建检查/etc/containers/是否存在,手动mkdir -p
所有镜像源都超时网络不通检查虚拟机网络:podman machine ssh -- ping -c 3 docker.m.daocloud.io
podman info不显示镜像语法错误检查 TOML 格式,确保[[registry.mirror]]双括号正确