Files
xuanyuan_docker_proxy/usage/docker-compose-docker-guide.md
Sean 0dbebc1a45 新增一键脚本备用地址
新增一键脚本备用地址
2026-08-22 20:22:38 +08:00

7.4 KiB
Raw Permalink Blame History

Docker Compose 镜像源配置教程

在线版:https://xuanyuan.cloud/usage/docker-compose

在 Docker Compose 环境中配置轩辕镜像源,让容器编排享受优化访问体验

目录

背景说明

Docker 默认使用官方镜像仓库,在国内大陆访问时速度较慢,容易出现连接超时、拉取失败等问题。

轩辕镜像支持 9 个主流镜像仓库:

  • Docker Hub (docker.io)
  • GitHub Container Registry (ghcr.io)
  • Google Container Registry (gcr.io)
  • Quay.io (quay.io)
  • NVIDIA Container Registry (nvcr.io)
  • Kubernetes Registry (registry.k8s.io)
  • Microsoft Container Registry (mcr.microsoft.io)
  • Elastic Registry (docker.elastic.co)
  • Oracle Container Registry (container-registry.oracle.com)
  • GitLab Container Registry (registry.gitlab.com)

轩辕镜像提供高速稳定的镜像服务,支持 Docker 和 Compose 环境,无需额外插件,全面兼容 Docker 镜像拉取逻辑。

💡 **适用场景:**希望通过 docker-compose 管理容器,并全局启用轩辕镜像功能的用户

Compose 转换工具

如果你刚接触 Docker Compose,建议先从工具页完成配置再回到教程落地。下面两个入口分别覆盖「可视化生成」和「YAML 一键转换」场景,适合不同阶段的用户使用。

Compose 综合工具页(默认入口)

该页面默认进入可视化模式,可通过表单配置镜像、端口、卷、环境变量、重启策略、GPU 和资源限制等参数,实时生成 docker-compose.yml。

页面内置常用模板,并支持与 Docker Run 工具双向衔接(Compose 可转 Run,Run 也可带参数回填),更适合从零搭建或边配边看的新手。

打开 Compose 综合工具页

YAML 一键转换模式

该入口直接打开 tab=yaml 模式:粘贴现有 Compose 文件后可一键转换为轩辕版本,自动处理镜像地址,并保留 services、volumes、networks、depends_on 等原有结构。

你还可以按需勾选 NPM/PIP/Golang/Yarn/HuggingFace 加速配置,转换后支持在线复制和下载 YAML,适合已有项目做批量改造或迁移。

打开 YAML 一键转换模式

获取专属域名

登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取您的专属域名:

格式示例:https://***.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 的配置文件 /etc/docker/daemon.json:

echo '{
  "insecure-registries": ["***.xuanyuan.run"],
  "registry-mirrors": ["https://***.xuanyuan.run"]
}' | sudo tee /etc/docker/daemon.json > /dev/null

⚠️ 请将 *** 替换为您的专属域名。登录网站后,点击左侧菜单栏的「专属域名」菜单即可获取。

重启 Docker 服务

重新加载 systemd daemon 配置:

sudo systemctl daemon-reload

重启 Docker 服务:

sudo systemctl restart docker

可选:查看 Docker 配置是否加载成功

docker info | grep -A 10 "Registry Mirrors"

输出中应包含您的专属地址,例如:

Registry Mirrors:
https://***.xuanyuan.run/

使用 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: root

Dockerfile 示例

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)来实现更强制性的访问优化。

技术支持

如遇配置问题,请提交工单寻求技术支持。