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
可用镜像源
| 镜像源 | 地址 | 备注 |
|---|---|---|
| DaoCloud | docker.m.daocloud.io | 老牌镜像,稳定性好 |
| 1ms | docker.1ms.run | 速度较快 |
| 腾讯云 | mirror.ccs.tencentyun.com | 腾讯云内网更快 |
| 阿里云 | registry.cn-hangzhou.aliyuncs.com | 需注册获取专属加速地址 |
| 中科大 | docker.mirrors.ustc.edu.cn | 教育网友好 |
操作步骤
以下🏠 宿主机和📦 虚拟机标签区分命令执行位置。
1. 进入虚拟机
# 🏠 宿主机podmanmachinesshpodman-vm2. 切换 root(推荐)
# 📦 虚拟机sudo-i3. 备份原配置(如果有的话)
# 📦 虚拟机cp/etc/containers/registries.conf /etc/containers/registries.conf.bak2>/dev/null4. 写入镜像配置
方式一:一键写入(推荐)
# 📦 虚拟机(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.conf5. 退出虚拟机并重启
# 📦 虚拟机exit# 退出 rootexit# 退出虚拟机(回到宿主机)# 🏠 宿主机podmanmachine stoppodmanmachine start6. 验证配置是否生效
# 🏠 宿主机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]]双括号正确 |