Docker Compose 镜像配置教程
在 Docker Compose 环境中配置轩辕镜像源,让容器编排享受优化访问体验
背景说明
Docker 默认使用官方镜像仓库,在国内大陆访问时速度较慢,容易出现连接超时、拉取失败等问题。
轩辕镜像支持 9 个主流镜像仓库:
轩辕镜像提供高速稳定的镜像服务,支持 Docker 和 Compose 环境,无需额外插件,全面兼容 Docker 镜像拉取逻辑。
💡适用场景:希望通过 docker-compose 管理容器,并全局启用轩辕镜像功能的用户
1获取专属域名
登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取您的专属域名:
格式示例:https://xxx.xuanyuan.run
其中 xxx 为您专属域名,请替换下文命令中的 xxx 部分。
2配置 Docker Daemon 镜像源
推荐方案:一键安装配置脚本
该脚本支持多种Linux发行版,支持一键安装 docker、docker-compose 并且一键配置轩辕镜像源。
或者手动编辑(或创建)Docker 的配置文件 /etc/docker/daemon.json:
echo '{
"insecure-registries": ["xxx.xuanyuan.run"],
"registry-mirrors": ["https://xxx.xuanyuan.run"]
}' | sudo tee /etc/docker/daemon.json > /dev/null⚠️请将 xxx 替换为您的专属域名。登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取。
3重新加载 Daemon 并重启 Docker 服务
重新加载 systemd daemon 配置:
sudo systemctl daemon-reload
重启 Docker 服务:
sudo systemctl restart docker
可选:查看 Docker 配置是否加载成功
docker info | grep -A 10 "Registry Mirrors"
输出中应包含您的专属地址,例如:
https://xxx.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://xxx.xuanyuan.run 拉取,无需额外设置。
验证镜像拉取是否优化访问
执行以下命令查看实际使用的拉取源:
docker pull mysql:8.0
再查看系统日志:
journalctl -u docker.service -n 50
如果看到如 connecting to https://xxx.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 xxx.xuanyuan.run/mysql如果能正常拉取,说明专属域名可用且有流量。
解决方法:
强烈建议手动修改 docker-compose.yml 中的镜像地址为专属域名,如:
version: "3.8"
services:
web:
image: xxx.xuanyuan.run/library/nginx:latest
ports:
- "8080:80"
db:
image: xxx.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 里写完整的专属域名镜像地址即可,例如:
假设你的镜像仓库地址是 xxx.xuanyuan.run/centos:7
那么 Dockerfile 改成:
FROM xxx.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 → xxx.xuanyuan.run/nginx)来实现更强制性的访问优化。
技术支持
如遇配置问题,请 提交工单 寻求技术支持。
镜像拉取常见问题
使用与功能问题
错误码与失败问题
manifest unknown 错误:镜像不存在或标签错误
manifest unknown 错误
TLS/SSL 证书验证失败:Docker pull 时 HTTPS 证书错误
TLS 证书验证失败
DNS 解析超时:无法解析镜像仓库地址或连接超时
DNS 解析超时
410 Gone 错误:Docker 版本过低导致协议不兼容
410 错误:版本过低
402 Payment Required 错误:流量耗尽错误提示
402 错误:流量耗尽
401 UNAUTHORIZED 错误:身份认证失败或登录信息错误
身份认证失败错误
429 Too Many Requests 错误:请求频率超出专业版限制
429 限流错误
Docker login 凭证保存错误:Cannot autolaunch D-Bus(不影响登录)
凭证保存错误
账号 / 计费 / 权限
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务