Podman 国内镜像设置
Podman 镜像源的设置
前言:
主包仅是一个对计算机技术感兴趣的学生,对教程的严谨性以及正确性无法提供生产级别的稳定保障。请您自行判断/决定文章的正确性
时效性:2026-07-04
环境:Debian13+xfce
联系邮箱:um84cxbtq@mozmail.com
分流中转导航页:xxxxxxx
前情
就目前的网络环境,我们这些好奇心玩家使用各类的容器工具一定离不开一个问题,镜像拉取。随着之前的那个通知,原本各大厂商和学院已不再明着将镜像源以及配置方式发出来了。中国人民是富有生命力的,一座座个人镜像站拔地而起。这让我想到那句经典台词“我命由我不由天”。一位位友人为我们搭起了这座“网络火线桥”,让我们能够不需要购买服务器就能白嫖


实操
教程理论支持
upstream 官方(可点击跳转)、Debian Man Pagres(可点击跳转)
介绍一下,接下来是主包与元宝AI的对话浓缩版,请酌情使用。
- 材料:
| 名称 | 链接 | 跳转按钮 |
|---|---|---|
| 容器镜像监控 | https://status.anye.xyz/ | 点击跳转 |
- 第一步:
访问材料中的第一个链接,并点击导航栏中的DockerHub。 - 第二步:
选择自己想要使用的镜像源,然后复制下方黑快左侧的配置文字模块中的文字。如果内有看见有找到下方一块悬浮的黑跳,然后点击黑条最右侧的展开配置按钮。记得在复制前记得看黑条左侧配置文字模块上面的下拉框中选中的是“Podman”。 - 第三步:
不要理睬黑快右侧的操作指导,请你跟着以下的步骤进行。
我十分推荐大家使用系统级配置,这样你不管什么用户使用都是使用配置好的镜像而不是原站。
首先进入配置文件目录
cd /etc/containers/registries.conf.d
其次创建配置文件并写入配置文件内容。(切记,接下来所有操作的前提都是键盘切换为英文输入模式,而不是中文输入模式——一般再中文输入模式下按键盘组合按键Ctrl+空格(Spacebar))(先执行下面的命令,然后先按键盘Esc按键,再按键盘i按键,再使用粘贴快捷键Ctrl+Shift+v,然后按键盘Esc按键,然后输入:wq然后就结束了)
sudo vi mirrors-docker.conf
配置文件示例
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
location = "docker.1ms.run"
[[registry.mirror]]
location = "docker.1panel.live"
[[registry.mirror]]
location = "docker.sparkcr.cn"
[[registry.mirror]]
location = "hub.rat.dev"
[[registry.mirror]]
location = "dockerproxy.net"
[[registry.mirror]]
location = "docker-registry.nmqu.com"
[[registry.mirror]]
location = "docker.hlmirror.com"
[[registry.mirror]]
location = "hub1.nat.tf"
[[registry.mirror]]
location = "hub3.nat.tf"
[[registry.mirror]]
location = "docker.m.daocloud.io"
[[registry.mirror]]
location = "docker.kejilion.pro"
[[registry.mirror]]
location = "docker.367231.xyz"
[[registry.mirror]]
location = "hub.1panel.dev"
小注意
在一些非常规情况下——例如一段时间内拉取的镜像太多,镜像站就会拒绝服务,然后在终端(Terminal)中显示“因为您的请求次数过于频繁,请在xx时段后重试”这些字样。
按照常理Podman配置中使用了“[[registry.mirror]]”应该会自动切换故障镜像站。但事实是除非镜像站断网或者自身故障返回3xx、4xx的错误代码,否则Podman不会切换,恰巧上面这种情况访问是正常的200 OK但只是访问到的是html,服务端只是见那句话返回来,所以Podman没有动做。
- 解决:
方式一(我是用的):
直接在无法使用的源前面添加#。例如
# [[registry.mirror]]
# location = "hub.1panel.dev"
方法二:
替换run/pull命令中镜像的拉取url。例如
# 原始版本
podman pull nginx:alpine
# 显式指定版本
podman pull hub.1panel.dev/library/nginx:alpine
小结
- 懒人一次性操作脚本本
vi podman-mirrors.sh
然后将以下内容复制进去
#!/bin/bash
set -e
CONF_DIR="/etc/containers/registries.conf.d"
CONF_FILE="${CONF_DIR}/mirrors-docker.conf"
echo "==> 检查配置目录是否存在"
if [ ! -d "${CONF_DIR}" ]; then
echo "目录不存在,正在创建:${CONF_DIR}"
sudo mkdir -p "${CONF_DIR}"
fi
echo "==> 创建/写入镜像加速配置文件"
sudo tee "${CONF_FILE}" > /dev/null << 'EOF'
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
location = "docker.1ms.run"
[[registry.mirror]]
location = "docker.1panel.live"
[[registry.mirror]]
location = "docker.sparkcr.cn"
[[registry.mirror]]
location = "hub.rat.dev"
[[registry.mirror]]
location = "dockerproxy.net"
[[registry.mirror]]
location = "docker-registry.nmqu.com"
[[registry.mirror]]
location = "docker.hlmirror.com"
[[registry.mirror]]
location = "hub1.nat.tf"
[[registry.mirror]]
location = "hub3.nat.tf"
[[registry.mirror]]
location = "docker.m.daocloud.io"
[[registry.mirror]]
location = "docker.kejilion.pro"
[[registry.mirror]]
location = "docker.367231.xyz"
[[registry.mirror]]
location = "hub.1panel.dev"
EOF
echo "==> 设置权限"
sudo chmod 644 "${CONF_FILE}"
echo "✅ 镜像加速配置完成!"
echo "配置文件路径:${CONF_FILE}"
然后
chmod +x podman-mirrors.sh
./podman-mirrors.sh

浙公网安备 33010602011771号