Docker Compose 镜像源配置教程
在 Docker Compose 环境中配置轩辕镜像源,让容器编排享受优化访问体验
背景说明
Docker 默认使用官方镜像仓库,在国内大陆访问时速度较慢,容易出现连接超时、拉取失败等问题。
轩辕镜像支持 9 个主流镜像仓库:
轩辕镜像提供高速稳定的镜像服务,支持 Docker 和 Compose 环境,无需额外插件,全面兼容 Docker 镜像拉取逻辑。
💡适用场景:希望通过 docker-compose 管理容器,并全局启用轩辕镜像功能的用户
1获取专属域名
登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取您的专属域名:
格式示例:https://***.xuanyuan.run
其中 *** 为您专属域名,请替换下文命令中的 *** 部分。
2配置 Docker Daemon 镜像源
推荐方案:一键安装配置脚本
该脚本支持多种Linux发行版,支持一键安装 docker、docker-compose 并且一键配置轩辕镜像源。
或者手动编辑(或创建)Docker 的配置文件 /etc/docker/daemon.json:
echo '{
"insecure-registries": ["***.xuanyuan.run"],
"registry-mirrors": ["https://***.xuanyuan.run"]
}' | sudo tee /etc/docker/daemon.json > /dev/null⚠️请将 *** 替换为您的专属域名。登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取。
3重新加载 Daemon 并重启 Docker 服务
重新加载 systemd daemon 配置:
sudo systemctl daemon-reload
重启 Docker 服务:
sudo systemctl restart docker
可选:查看 Docker 配置是否加载成功
docker info | grep -A 10 "Registry Mirrors"
输出中应包含您的专属地址,例如:
https://***.xuanyuan.run/
使用 Docker Compose 拉取镜像
一旦系统级 Docker 配置完成,Docker Compose 将自动使用轩辕镜像镜像拉取,无须单独配置 Compose 文件。
示例 docker-compose.yml:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root运行命令:
docker compose up -d
镜像将自动通过 https://***.xuanyuan.run 拉取,无需额外设置。
验证镜像拉取是否优化访问
执行以下命令查看实际使用的拉取源:
docker pull mysql:8.0
再查看系统日志:
journalctl -u docker.service -n 50
如果看到如 connecting to https://***.xuanyuan.run/v2/ 的字样,说明配置已生效。
常见问题解答
Q: 为什么配置了 registry-mirrors,还是走 docker.io?
很多用户反馈,已经在 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如果能正常拉取,说明专属域名可用且有流量。
解决方法:
强烈建议手动修改 docker-compose.yml 中的镜像地址为专属域名,如:
version: "3.8"
services:
web:
image: ***.xuanyuan.run/library/nginx:latest
ports:
- "8080:80"
db:
image: ***.xuanyuan.run/library/mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootDockerfile 示例
Dockerfile 里是这样写的:
FROM centos VOLUME ["volume01" "volume02"] CMD echo '----end----' CMD /bin/bash
这里 FROM centos 表示基础镜像是从 Docker Hub 官方仓库拉取的 centos 镜像。
如果你要指定用 轩辕镜像仓库地址,只要在 FROM 里写完整的专属域名镜像地址即可,例如:
假设你的镜像仓库地址是 ***.xuanyuan.run/centos:7
那么 Dockerfile 改成:
FROM ***.xuanyuan.run/centos:7 VOLUME ["volume01" "volume02"] CMD echo '----end----' CMD ["/bin/bash"]
这样 docker build 时就不会去官方 Docker Hub 拉,而是从你指定的 轩辕镜像源 拉。
附加建议
若在 CI/CD 环境中(如 GitLab CI、GitHub Actions)使用 Docker Compose,可通过替换 Compose 文件中的镜像前缀(如 docker.io/nginx → ***.xuanyuan.run/nginx)来实现更强制性的访问优化。
技术支持
如遇配置问题,请 提交工单 寻求技术支持。
轩辕镜像配置手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
Docker 配置
登录仓库拉取
通过 Docker 登录认证访问私有仓库
专属域名拉取
无需登录使用专属域名
K8s Containerd
Kubernetes 集群配置 Containerd
K3s
K3s 轻量级 Kubernetes 镜像加速
Dev Containers
VS Code Dev Containers 配置
Podman
Podman 容器引擎配置
Singularity/Apptainer
HPC 科学计算容器配置
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
Harbor 镜像源配置
Harbor Proxy Repository 对接专属域名
Portainer 镜像源配置
Portainer Registries 加速拉取
Nexus 镜像源配置
Nexus3 Docker Proxy 内网缓存
系统配置
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
镜像拉取常见问题
使用与功能问题
错误码与失败问题
docker pull 提示 manifest unknown 怎么办?
manifest unknown
docker pull 提示 no matching manifest 怎么办?
no matching manifest(架构)
镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?
invalid tar header(解压)
Docker pull 时 HTTPS / TLS 证书验证失败怎么办?
TLS 证书失败
Docker pull 时 DNS 解析超时或连不上仓库怎么办?
DNS 超时
Docker 拉取出现 410 Gone 怎么办?
410 Gone 排查
出现 402 或「流量用尽」提示怎么办?
402 与流量用尽
Docker 拉取提示 UNAUTHORIZED(401)怎么办?
401 认证失败
遇到 429 Too Many Requests(请求太频繁)怎么办?
429 限流
docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?
D-Bus 凭证提示
为什么会出现「单层超过 20GB」或 413,无法加速拉取?
413 与超大单层
账号 / 计费 / 权限
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务