4.3 KiB
Linux 系统 Docker 镜像源配置教程
在 Linux 系统上配置轩辕镜像源,让所有 Docker 操作都享受优化访问体验
目录
获取专属域名
登录网站后,在左侧菜单栏的「专属域名」菜单中获取您的专属域名,格式为:***.xuanyuan.run
注意:请将 *.xuanyuan.run 替换为您的专属域名。登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取。
配置 Docker daemon
推荐方案:一键安装配置脚本
该脚本支持多种 Linux 发行版,支持一键安装 docker、docker-compose 并且一键配置轩辕镜像源。
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
# 备用地址1
bash <(wget -qO- https://get.xuanyuan.dev/docker.sh)
# 备用地址2
bash <(wget -qO- https://get.xuanyuan.me/docker.sh)
或者手动使用以下命令配置 Docker daemon 文件:
echo '{
"insecure-registries": ["***.xuanyuan.run"],
"registry-mirrors": ["https://***.xuanyuan.run"]
}' | sudo tee /etc/docker/daemon.json > /dev/null
此命令会将镜像源配置写入 /etc/docker/daemon.json 文件
⚠️ 请将 *.xuanyuan.run 替换为您的专属域名。登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取。
⚠️ **注意:**daemon.json 配置的镜像仅对 docker.io 生效,其他仓库镜像需要显式指定地址拉取。
registry-mirrors只作用于 docker.io(Docker Hub 官方仓库)。对于其他 Registry(如
ghcr.io、quay.io、gcr.io等),Docker 客户端不会去查 registry-mirrors,而是直接请求这些域名。正确的方法是指定地址显式拉取:
docker pull ***-ghcr.xuanyuan.run/org/image:tag
docker pull ***-quay.xuanyuan.run/coreos/etcd:latest
重新加载 daemon
重新加载 systemd daemon 配置:
systemctl daemon-reload
重启 Docker 服务
重启 Docker 服务使配置生效:
systemctl restart docker
💡 重启后,Docker 将使用新的镜像源配置
验证配置
验证配置是否生效:
docker info | grep -A 10 "Registry Mirrors"
如果配置成功,您应该能看到您的轩辕镜像地址
镜像下载步骤
配置完成后,您可以直接使用标准的 Docker 命令拉取镜像:
docker pull mysql:latest
⚠️ PS: 不加 TAG 默认为 latest,建议指定具体的 TAG 版本进行下载。
配置说明
为什么配置了 Docker Registry Mirrors 仍然走官方源?
很多用户反馈,已经在 Docker 中配置了镜像源(registry-mirrors),但拉取镜像时仍然访问官方源(docker.io)。
拉取报错如下:
Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client. Timeout exceeded while awaiting headers)
这是因为 Docker 的镜像拉取机制是优先尝试使用镜像源,而不是强制始终使用。部分镜像的 tag 或 namespace 特殊(如 docker-library),可能仍绕过镜像源。
常见原因
专属域名没有可用流量
如果你使用专属域名,但该地址没有充值流量,当 Docker 客户端请求镜像源时,服务端会返回 402 Payment Required 错误,Docker 就会直接回退到官方仓库 docker.io 拉取镜像。
解决方案: 请前往充值页面充值相应的流量包,确保您的专属域名有足够的流量支持镜像服务。
如何确认专属域名可用
建议先用下列方式测试:
docker pull ***.xuanyuan.run/mysql
如果能正常拉取,说明专属域名可用且有流量。
解决方法
如果配置后仍然不生效,建议参考下列文档拉取镜像: