mirror of
https://github.com/SeanChang/xuanyuan_docker_proxy.git
synced 2026-10-07 11:43:28 +08:00
140 lines
4.3 KiB
Markdown
140 lines
4.3 KiB
Markdown
# Linux 系统 Docker 镜像源配置教程
|
||
|
||
> 在线版:https://xuanyuan.cloud/usage/linux
|
||
|
||
在 Linux 系统上配置轩辕镜像源,让所有 Docker 操作都享受优化访问体验
|
||
|
||
## 目录
|
||
|
||
- [获取专属域名](#获取专属域名)
|
||
- [配置 Docker daemon](#配置-docker-daemon)
|
||
- [重新加载 daemon](#重新加载-daemon)
|
||
- [重启 Docker 服务](#重启-docker-服务)
|
||
- [验证配置](#验证配置)
|
||
- [镜像下载步骤](#镜像下载步骤)
|
||
- [配置说明](#配置说明)
|
||
|
||
## 获取专属域名
|
||
|
||
登录网站后,在左侧菜单栏的「专属域名」菜单中获取您的专属域名,格式为:`***.xuanyuan.run`
|
||
|
||
> **注意**:请将 ***.xuanyuan.run** 替换为您的专属域名。[登录](https://xuanyuan.cloud/dashboard?next=%2Fusage%2Flinux)网站后,点击左侧菜单栏的「专属域名」菜单即可获取。
|
||
|
||
## 配置 Docker daemon
|
||
|
||
### 推荐方案:一键安装配置脚本
|
||
|
||
该脚本支持多种 Linux 发行版,支持一键安装 docker、docker-compose 并且一键配置轩辕镜像源。
|
||
|
||
```bash
|
||
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 文件:
|
||
|
||
```bash
|
||
echo '{
|
||
"insecure-registries": ["***.xuanyuan.run"],
|
||
"registry-mirrors": ["https://***.xuanyuan.run"]
|
||
}' | sudo tee /etc/docker/daemon.json > /dev/null
|
||
```
|
||
|
||
此命令会将镜像源配置写入 `/etc/docker/daemon.json` 文件
|
||
|
||
> ⚠️ 请将 ***.xuanyuan.run** 替换为您的专属域名。[登录](https://xuanyuan.cloud/dashboard?next=%2Fusage%2Flinux)网站后,点击左侧菜单栏的「专属域名」菜单即可获取。
|
||
|
||
> ⚠️ **注意:**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 配置:
|
||
|
||
```bash
|
||
systemctl daemon-reload
|
||
```
|
||
|
||
## 重启 Docker 服务
|
||
|
||
重启 Docker 服务使配置生效:
|
||
|
||
```bash
|
||
systemctl restart docker
|
||
```
|
||
|
||
> 💡 重启后,Docker 将使用新的镜像源配置
|
||
|
||
## 验证配置
|
||
|
||
验证配置是否生效:
|
||
|
||
```bash
|
||
docker info | grep -A 10 "Registry Mirrors"
|
||
```
|
||
|
||
如果配置成功,您应该能看到您的轩辕镜像地址
|
||
|
||
## 镜像下载步骤
|
||
|
||
配置完成后,您可以直接使用标准的 Docker 命令拉取镜像:
|
||
|
||
```bash
|
||
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 拉取镜像。
|
||
|
||
**解决方案:** 请前往[充值页面](https://xuanyuan.cloud/recharge)充值相应的流量包,确保您的专属域名有足够的流量支持镜像服务。
|
||
|
||
#### 如何确认专属域名可用
|
||
|
||
建议先用下列方式测试:
|
||
|
||
```bash
|
||
docker pull ***.xuanyuan.run/mysql
|
||
```
|
||
|
||
如果能正常拉取,说明专属域名可用且有流量。
|
||
|
||
#### 解决方法
|
||
|
||
如果配置后仍然不生效,建议参考下列文档拉取镜像:
|
||
|
||
- [专属域名方式配置教程](https://xuanyuan.cloud/usage/nologin)
|
||
- [登录方式配置教程](https://xuanyuan.cloud/usage/login)
|