zhangkefeng2010 / Docker-Proxy

🔥 🔥 🔥 自建Docker镜像加速服务,基于官方Docker Registry 一键部署Docker、K8s、Quay、Ghcr、Mcr等镜像加速\管理服务。支持部署到Render

Home Page:https://t.me/dqzboyblog

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

中文 | English


自建Docker镜像加速服务,基于官方 registry 一键部署Docker、K8s、Quay、Ghcr、Mcr、elastic等镜像加速\管理服务.


📝 准备工作

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

免费域名证书申请

方式一: Acme.sh自动生成和续订Lets Encrypt免费SSL证书

方式二: 域名托管到Cloudflare 开启免费SSL证书

方式三: 可通过第三方平台,申请免费的域名证书(免费一般都为DV证书),适用于个人网站、博客和小型项目

如果你没有上面提到的环境,那么你也可以尝试以下的几种方案

方案一: 🚀 如果你身边没有上面提到的这些东西,那么你也可以部署到 Render

方案二: 如果你只有一台服务器,不想搞域名也不想配置TLS,那么你可以修改Docker的配置文件daemon.json,指定insecure-registries 为你的镜像加速地址

方案三: 如果你是在国内的服务器部署,那么你可以在执行一键部署时配置代理,同时会帮你解决国内无法安装Docker的问题

部署过程中出现的问题或者疑问,请点击这里 问题总结,查看是否有你遇到的情况!尝试先自己解决。


📦 部署

通过项目脚本部署

# 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)"

部署到第三方平台

部署到 Render

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

使用Render快速部署: 点击查看教程

部署到 Koyeb

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

使用Koyeb快速部署: 点击查看教程

Docker Compose 部署

手动部署容器

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

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

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

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

docker compose up -d

# 查看容器日志
docker logs -f [容器ID或名称]

4. 如果你对Nginx或Caddy不熟悉,那么你可以使用你熟悉的服务进行代理。也可以直接通过IP+端口的方式访问

🔨 功能

  • 一键部署Docker镜像代理服务的功能,支持基于官方Docker Registry的镜像代理.
  • 支持多个镜像仓库的代理,包括Docker Hub、GitHub Container Registry(ghcr.io)、Quay Container Registry(quay.io)、Kubernetes Container Registry(k8s.gcr.io)、Microsoft Container(mcr.microsoft.com)、Elastic Stack(docker.elastic.co)
  • 自动检查并安装所需的依赖软件,如Docker、Nginx\Caddy等,并确保系统环境满足运行要求
  • 根据你所选择部署的服务,自动渲染对应的Nginx或Caddy服务配置
  • 自动清理注册表上传目录中的那些不再被任何镜像或清单引用的文件
  • 支持自定义配置代理缓存时间(PROXY_TTL)
  • 提供了重启服务、更新服务、更新配置和卸载服务的功能,方便用户进行日常管理和维护
  • 支持用户在部署时选择是否提供身份验证
  • 支持配置代理(HTTP_PROXY),仅支持http
  • 解决国内环境无法安装Docker服务的难题
  • 支持主流Linux发行版操作系统,例如Centos、Ubuntu、Rocky、Debian、Rhel等
  • 支持主流ARCH架构下部署,包括linux/amd64、linux/arm64

✨ 教程

配置Nginx反向代理

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

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

~]# vim /etc/docker/daemon.json
{
    "registry-mirrors": [ "https://hub.your_domain_name" ],
    "log-opts": {
      "max-size": "100m",
      "max-file": "5"
    }
}

说明: 配置了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

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

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

📚 展示


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

💻 UI

docker-proxy


👨🏻‍💻 问题

问题总结

部署、使用相关等常见问题总结,欢迎补充!

相关问题总结: 点击查看


🫶 赞助

如果你觉得这个项目对你有帮助,请给我点个Star。并且情况允许的话,可以给我一点点支持,总之非常感谢支持😊

项目作者自建公益服务:服务地址查看

Alipay WeChat Pay

😺 其他

开源不易,若你参考此项目或基于此项目修改可否麻烦在你的项目文档中标识此项目?谢谢你!

❤ 鸣谢

感谢以下项目的开源的付出:

CNCF Distribution

docker-registry-browser

About

🔥 🔥 🔥 自建Docker镜像加速服务,基于官方Docker Registry 一键部署Docker、K8s、Quay、Ghcr、Mcr等镜像加速\管理服务。支持部署到Render

https://t.me/dqzboyblog

License:MIT License


Languages

Language:Shell 100.0%