# 📝 准备工作

⚠️ 重要:选择一台国外服务器,并且未被墙。对于域名,无需进行国内备案。你也可以通过一些平台申请免费域名。在一键部署过程中,如果选择安装Caddy,它将自动配置HTTPS。若选择部署Nginx服务,则需要自行申请一个免费的SSL证书,或者通过其他方式来实现SSL加密。

高性价比海外 VP 推荐点击查看 (opens new window)

# 📦 部署教程

# 一键部署

# CentOS && RHEL && Rocky
yum -y install curl
# ubuntu && debian
apt -y install curl

# 国外环境
bash -c "$(curl -fsSL https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"

# 国内环境
bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/dqzboy/Docker-Proxy/install/DockerProxy_Install.sh)"
1
2
3
4
5
6
7
8
9
10

# Docker Compose 部署

⚠️ 注意: 你需要对哪个镜像仓库进行加速,就下载哪个配置。docker-compose.yaml文件默认是部署所有的国外镜像仓库的加速服务,同样也是你部署哪个就配置哪个,其余的删除掉即可!

1. 下载config (opens new window)目录下对应的yml文件到你本地机器上

2. 下载docker-compose.yaml (opens new window)文件到你本地机器上,并且与配置文件同级目录下

3. 执行 docker composedocker-compose 命令启动容器服务

# 启动全部容器
docker compose up -d

# 启动指定的容器,例如: Docker Hub Registry Proxy
docker compose up -d dockerhub

# 查看容器日志
docker logs -f [容器ID或名称]
1
2
3
4
5
6
7
8

# 📦 部署到第三方平台

# 部署到 Render

Render 提供免费额度,绑卡后可以进一步提升额度

1. 登入 Render (opens new window)

2. 创建我们的服务

3. 选择以docker容器的方式部署,输入下面任一镜像地址

⚠️ 特别说明:当前作者Docker Hub仓库账号已被Render特殊对待了,建议大家把下面的镜像下载到自己本地,然后上传到自己的Docker hub仓库。下面的镜像地址也会随时被Render限制使用具体操作可以看此教程

镜像 平台
mirhub/mirror-hub:latest docker hub
mirhub/mirror-gcr:latest Google Container Registry
mirhub/mirror-ghcr:latest GitHub Container Registry
mirhub/mirror-k8sgcr:latest Kubernetes Container Registry
mirhub/mirror-k8sreg:latest Kubernetes's container image registry
mirhub/mirror-quay:latest Quay Container Registry
mirhub/mirror-elastic:latest Microsoft Container Registry
mirhub/mirror-mcr:latest Elastic Stack

4. 实例类型选择免费即可(免费实例需要保活,可使用 uptime-kuma (opens new window)D监控 (opens new window) 实现)

5. 环境变量不用添加,直接选择创建即可

6. 等待服务运行完成之后,使用分配的外网域名即可愉快的使用了

# ✨ 使用

1. 改Docker的daemon.json配置,配置你Render服务地址。修改后重启docker

~]# vim /etc/docker/daemon.json
{
    "registry-mirrors": [ "https://your_render_url" ],
    "log-opts": {
      "max-size": "100m",
      "max-file": "5"
    }
}
1
2
3
4
5
6
7
8

2. 使用Render服务地址替换官方的 Registry 地址拉取镜像

# docker hub Registry
## 源:redis:latest
## 替换
docker pull your_render_url/library/redis:latest
1
2
3
4

说明:如果上面配置了docker的daemon.json,那么拉取镜像的时候就不需要在镜像前面加Render_URL了。【只针对拉取Docker Hub上的镜像有效】

3. 拉取速度测试,效果还是可以的,主要是免费 image

4. 前缀替换的 Registry 的参考

源站 替换为 平台
docker.io your_render_url docker hub
gcr.io your_render_url Google Container Registry
ghcr.io your_render_url GitHub Container Registry
k8s.gcr.io your_render_url Kubernetes Container Registry
quay.io your_render_url Quay Container Registry
mcr.microsoft.com mcr.your_domain_name Microsoft Container Registry
docker.elastic.co elastic.your_domain_name Elastic Stack

# ✨ 将镜像上传到自己的Docker Hub仓库

镜像 平台
dqzboy/mirror-hub:latest docker hub
dqzboy/mirror-gcr:latest Google Container Registry
dqzboy/mirror-ghcr:latest GitHub Container Registry
dqzboy/mirror-k8sgcr:latest Kubernetes Container Registry
dqzboy/mirror-k8sreg:latest Kubernetes's container image registry
dqzboy/mirror-quay:latest Quay Container Registry
dqzboy/mirror-mcr:latest Microsoft Container
dqzboy/mirror-elastic:latest Elastic Stack

步骤 1: 登录到 Docker Hub

  • 打开终端输入以下命令并按提示输入你的 Docker Hub 用户名和密码:
docker login
1

步骤 2: 拉取镜像

  • 使用 docker pull 命令拉取上面的镜像,这里以 dqzboy/mirror-hub:latest 举例:
docker pull dqzboy/mirror-hub:latest
1

步骤 3: 标记镜像

  • 给拉下来的镜像打一个新标签,使其指向你的 Docker Hub 用户名。
  • 假设你的 Docker Hub 用户名是 yourusername,你可以使用以下命令:
docker tag dqzboy/mirror-hub:latest yourusername/mirror-hub:latest
1

步骤 4: 上传镜像

  • 使用 docker push 命令上传标记的镜像到你的 Docker Hub 仓库:
docker push yourusername/mirror-hub:latest
1

步骤 5: 验证上传

  • 上传完成后,你可以登录到 Docker Hub 网站,查看你的仓库中是否已经存在刚刚上传的镜像。

# ⚠️ 注意

1. 免费实例如果15分钟内未收到入站流量,Render会关闭实例的网络服务。Render 会在下次收到处理请求时重新启动该服务。

2. Render每月为每个用户和团队提供 750 小时的免费实例时间:

  • 免费网络服务在运行期间会消耗这些时间(停止服务不会消耗免费实例小时数)
  • 如果您在某个月内用完了所有免费实例小时数,Render将暂停您的所有免费网络服务,直到下个月开始
  • 每个月开始时,您的免费实例小时数将重置为 750 小时(剩余小时数不会结转)

3. 最好自己个人使用或者小团队使用,如果你的服务使用人多了,Render照样会把你的服务给删除掉,并且没有任何提醒或通知!

# 部署到 Koyeb

Koyeb 分配的域名在国内地区访问不是很稳定,不是很推荐!

1. 登入 Koyeb (opens new window)

2. 创建我们的服务

3. 选择以docker容器的方式部署,输入下面任一镜像地址

镜像 平台
dqzboy/mirror-hub:latest docker hub
dqzboy/mirror-gcr:latest Google Container Registry
dqzboy/mirror-ghcr:latest GitHub Container Registry
dqzboy/mirror-k8sgcr:latest Kubernetes Container Registry
dqzboy/mirror-k8sreg:latest Kubernetes's container image registry
dqzboy/mirror-quay:latest Quay Container Registry
dqzboy/mirror-mcr:latest Microsoft Container
dqzboy/mirror-elastic:latest Elastic Stack

4. 实例类型选择免费即可

5. 暴露端口改为5000,自定义服务名称,然后直接创建即可

6. 等待服务运行完成之后,使用分配的外网域名即可愉快的使用了

# ✨ 使用

1. 改Docker的daemon.json配置,配置你Koyeb服务地址。修改后重启docker

~]# vim /etc/docker/daemon.json
{
    "registry-mirrors": [ "https://your_koyeb_url" ],
    "log-opts": {
      "max-size": "100m",
      "max-file": "5"
    }
}
1
2
3
4
5
6
7
8

2. 使用Koyeb服务地址替换官方的 Registry 地址拉取镜像

# docker hub Registry
## 源:redis:latest
## 替换
docker pull your_koyeb_url/library/redis:latest
1
2
3
4

说明:如果上面配置了docker的daemon.json,那么拉取镜像的时候就不需要在镜像前面加Koyeb_URL了。【只针对拉取Docker Hub上的镜像有效】

3. 前缀替换的 Registry 的参考

源站 替换为 平台
docker.io your_render_url docker hub
gcr.io your_render_url Google Container Registry
ghcr.io your_render_url GitHub Container Registry
k8s.gcr.io your_render_url Kubernetes Container Registry
quay.io your_render_url Quay Container Registry
mcr.microsoft.com mcr.your_domain_name Microsoft Container Registry
docker.elastic.co elastic.your_domain_name Elastic Stack

4. 说明: 测试发现Koyeb所解析的IP为cloudfare的,国内部分地区运营商对cloudfare进行了阻断,所以这些地区则无法正常访问!


# ✨ 将镜像上传到自己的Docker Hub仓库

步骤 1: 登录到 Docker Hub

  • 打开终端输入以下命令并按提示输入你的 Docker Hub 用户名和密码:
docker login
1

步骤 2: 拉取镜像

  • 使用 docker pull 命令拉取上面的镜像,这里以 dqzboy/mirror-hub:latest 举例:
docker pull dqzboy/mirror-hub:latest
1

步骤 3: 标记镜像

  • 给拉下来的镜像打一个新标签,使其指向你的 Docker Hub 用户名。
  • 假设你的 Docker Hub 用户名是 yourusername,你可以使用以下命令:
docker tag dqzboy/mirror-hub:latest yourusername/mirror-hub:latest
1

步骤 4: 上传镜像

  • 使用 docker push 命令上传标记的镜像到你的 Docker Hub 仓库:
docker push yourusername/mirror-hub:latest
1

步骤 5: 验证上传

  • 上传完成后,你可以登录到 Docker Hub 网站,查看你的仓库中是否已经存在刚刚上传的镜像。

# ✨ Nginx反向代理

# 配置Nginx反向代理

注意: 如果你选择部署的是Nginx,那么代理程序部署完成之后,需自行配置 Nginx

1.下载仓库下的nginx配置文件 registry-proxy.conf (opens new window) 到你的nginx服务下,并修改配置里的域名和证书部分
2.在你的DNS服务提供商将相应的访问域名解析到部署docker proxy服务的机器IP上
3.修改Docker的daemon.json配置,配置你自建的Registry地址。修改后重启docker

~]# vim /etc/docker/daemon.json
{
    "registry-mirrors": [ "https://hub.your_domain_name" ]
}
1
2
3
4

说明: 配置了daemon.json之后,现在拉取镜像无需指定你的加速地址,直接执行docker pull拉取你需要的镜像即可。下面的步骤是你在没有配置daemon.json的时候,拉取镜像需要加上你的加速地址才可以正常拉取。


1. 使用自建的 Registry 地址替换官方的 Registry 地址拉取镜像

# docker hub Registry
## 源:nginx:latest
## 替换
docker pull hub.your_domain_name/library/nginx:latest

# Google Registry
## 源:gcr.io/google-containers/pause:3.1
## 替换:
docker pull gcr.your_domain_name/google-containers/pause:3.1
1
2
3
4
5
6
7
8
9

2. 前缀替换的 Registry 的参考

源站 替换为 平台
docker.io hub.your_domain_name docker hub
gcr.io gcr.your_domain_name Google Container Registry
ghcr.io ghcr.your_domain_name GitHub Container Registry
k8s.gcr.io k8s-gcr.your_domain_name Kubernetes Container Registry
registry.k8s.io k8s.your_domain_name Kubernetes's container image registry
quay.io quay.your_domain_name Quay Container Registry
mcr.microsoft.com mcr.your_domain_name Microsoft Container Registry
docker.elastic.co elastic.your_domain_name Elastic Stack
nvcr.io nvcr.your_domain_name NVIDIA Container Registry

详细教程:
自建Docker镜像加速服务:加速与优化镜像管理 (opens new window)
自建Docker镜像加速,并把域名托管到CF加速镜像拉取 (opens new window)

# 📚 展示


系统环境检查 服务部署安装

# 💻 UI界面

HubCMD-UI 手动安装教程:点击查看教程 (opens new window)


Docker Registry UI Docker-Proxy CmdUI
Docker官方镜像搜索 Docker容器服务管理