{"id":13457020,"url":"https://github.com/dqzboy/Docker-Proxy","last_synced_at":"2025-03-24T12:30:38.843Z","repository":{"id":243392021,"uuid":"812303359","full_name":"dqzboy/Docker-Proxy","owner":"dqzboy","description":"🔥 🔥 🔥 自建Docker镜像加速服务，基于官方Docker  Registry 一键部署Docker、K8s、Quay、Ghcr、Mcr、Nvcr等镜像加速\\管理服务。支持免服务器部署到Render\\Koyeb","archived":false,"fork":false,"pushed_at":"2025-03-13T12:38:39.000Z","size":326,"stargazers_count":2798,"open_issues_count":0,"forks_count":421,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-03-13T13:37:36.301Z","etag":null,"topics":["docker-proxy","docker-registry","gcr-registry"],"latest_commit_sha":null,"homepage":"https://dqzboy.github.io/docs/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dqzboy.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://github.com/dqzboy/dqzboy/blob/main/.github/FUNDING.md"]}},"created_at":"2024-06-08T14:06:48.000Z","updated_at":"2025-03-13T12:38:43.000Z","dependencies_parsed_at":"2024-06-08T15:28:39.038Z","dependency_job_id":"0ddb72b4-1ef2-4147-b254-2faa7345fe32","html_url":"https://github.com/dqzboy/Docker-Proxy","commit_stats":null,"previous_names":["dqzboy/docker-proxy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dqzboy%2FDocker-Proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dqzboy%2FDocker-Proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dqzboy%2FDocker-Proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dqzboy%2FDocker-Proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dqzboy","download_url":"https://codeload.github.com/dqzboy/Docker-Proxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245269678,"owners_count":20587825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-proxy","docker-registry","gcr-registry"],"created_at":"2024-07-31T08:01:31.937Z","updated_at":"2025-03-24T12:30:38.836Z","avatar_url":"https://github.com/dqzboy.png","language":"HTML","funding_links":["https://github.com/dqzboy/dqzboy/blob/main/.github/FUNDING.md"],"categories":["JavaScript","HTML"],"sub_categories":[],"readme":"\u003cp align=\"right\"\u003e\n    \u003ca href=\"./README.md\"\u003e中文\u003c/a\u003e | \u003cstrong\u003eEnglish\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cdiv style=\"text-align: center\"\u003e\n  \u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/dqzboy/Docker-Proxy/assets/42825450/c187d66f-152e-4172-8268-e54bd77d48bb\" width=\"230px\" height=\"200px\"\u003e\n      \u003cbr\u003e\n      \u003ci\u003eSelf-built Docker image acceleration service, based on the official registry, one-click deployment of Docker, K8s, Quay, Ghcr, Mcr, elastic, nvcr and other image acceleration management services.\u003c/i\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Auth](https://img.shields.io/badge/Auth-dqzboy-ff69b4)](https://github.com/dqzboy)\n[![GitHub contributors](https://img.shields.io/github/contributors/dqzboy/Docker-Proxy)](https://github.com/dqzboy/Docker-Proxy/graphs/contributors)\n[![GitHub Issues](https://img.shields.io/github/issues/dqzboy/Docker-Proxy.svg)](https://github.com/dqzboy/Docker-Proxy/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/stars/dqzboy/Docker-Proxy)](https://github.com/dqzboy/Docker-Proxy)\n[![HitCount](https://views.whatilearened.today/views/github/dqzboy/Docker-Proxy.svg)](https://github.com/dqzboy/Docker-Proxy)\n[![GitHub license](https://img.shields.io/github/license/dqzboy/Docker-Proxy)](https://github.com/dqzboy/Docker-Proxy/blob/main/LICENSE)\n\n\n📢 \u003ca href=\"https://t.me/+ghs_XDp1vwxkMGU9\" style=\"font-size: 15px;\"\u003eDocker Proxy-Communication Group\u003c/a\u003e\n\n\u003c/div\u003e\n\n---\n\n## 📝 Preparation\n⚠️  **Important:** Choose a server located abroad and not blocked in your region. For the domain name, there is no need to register it with domestic authorities. You can also apply for a free domain through various platforms. During the one-click deployment process, if you choose to install Caddy, it will automatically configure HTTPS. If you opt to deploy Nginx, you'll need to apply for a free SSL certificate yourself or use other methods to implement SSL encryption.\n\n\u003e High-Cost-Effective Overseas VPS Recommendation: [Click to View](Ad/README.md) \n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eFree domain certificate application\u003c/strong\u003e\u003c/summary\u003e\n\u003cdiv\u003e\n\n**Method one:** [Acme.sh Automatically Generate and Renew Lets Encrypt Free SSL Certificate](https://www.dqzboy.com/16437.html)\n\n**Method two:** Domain hosted to[Cloudflare enabling free SSL certificate](https://www.cloudflare.com/zh-cn/application-services/products/ssl/)\n\n**Method Three:** You can apply for a free domain certificate (typically a DV certificate) through a third-party platform, suitable for personal websites, blogs, and small projects.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eIf you don't have the environment mentioned above, you can try the following several schemes\u003c/strong\u003e\u003c/summary\u003e\n\u003cdiv\u003e\n\n**Scheme one:**  🚀 🚀 If you don't have the things mentioned above, you can also deploy to **[Render](Render/README.md)**\n\n**Scheme two:** If you only have one server and don't want to deal with domain names or configure TLS, then you can configure Docker's configuration file `daemon.json`, and specify `insecure-registries` to configure your image acceleration address\n\n**Scheme three:** If you're deploying on a server within China, you can configure proxies while executing one-click deployment, which will also help solve the problem of Docker not being able to install domestically\n\n\u003c/details\u003e\n\n\n\u003e **During the deployment process, if you encounter any issues or questions, please scroll down to find the [problem](Issue/issue.en.md), see if your situation has been listed! Try to resolve it yourself first.**\n\n---\n\n\n## 📦 Deploy\n### Deploy through project script\n```shell\n# CentOS \u0026\u0026 RHEL \u0026\u0026 Rocky\nyum -y install curl\n# ubuntu \u0026\u0026 debian\napt -y install curl\n\n# overseas environment\nbash -c \"$(curl -fsSL https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)\"\n\n# domestic environment\nbash -c \"$(curl -fsSL https://cdn.jsdelivr.net/gh/dqzboy/Docker-Proxy/install/DockerProxy_Install.sh)\"\n```\n\n### Deployment to Third-Party Platforms\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDeploy to Render\u003c/strong\u003e\u003c/summary\u003e\n\u003cdiv\u003e\n\n\u003e Render offers a free quota, and you can further increase the quota after adding a card.\n\nDeploy quickly with Render: [View Tutorial](Render/README.md)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDeploy to Koyeb\u003c/strong\u003e\u003c/summary\u003e\n\u003cdiv\u003e\n\n\u003e The domain name assigned by Koyeb is not very stable when accessed in the domestic area, not highly recommended!\n\nDeploy quickly with Koyeb: [View Tutorial](Koyeb/README.md)\n\n\u003c/details\u003e\n\n\n### Docker Compose Deployment\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eManual Container Deployment\u003c/strong\u003e\u003c/summary\u003e\n\u003cdiv\u003e\n\n**⚠️ Note:** Download the configuration for whichever mirror repository you need to accelerate. The `docker-compose.yaml` file by default deploys the acceleration service for all foreign mirror repositories, again you configure whichever one you deploy, and delete the rest!\n\n**1.** Download the corresponding `yml` file from the [config](https://github.com/dqzboy/Docker-Proxy/tree/main/config) directory to your local machine.\n\n**2.** Download the [docker-compose.yaml](https://github.com/dqzboy/Docker-Proxy/blob/main/docker-compose.yaml) file to your local machine and place it in the same directory level as the configuration file.\n\n**3.** Execute the `docker compose` command to start the container service.\n```shell\ndocker compose up -d\n\n# View container logs\ndocker logs -f [Container ID or Name]\n```\n\n**4.** If you are not familiar with Nginx or Caddy, you can use a service you are familiar with for proxying. You can also access directly via IP and port number.\n\n\u003c/details\u003e\n\n\n## 🔨 Features\n- [x] One-click deployment of Docker image proxy services, supporting proxy based on the official Docker Registry. \n- [x] Supports proxy for multiple image repositories, including 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).\n- [x] Automatically checks for and installs required dependency software such as Docker, Nginx/Caddy, etc., and ensures the system environment meets the operational requirements.\n- [x] Automatically renders the corresponding Nginx or Caddy service configuration based on the service you choose to deploy.\n- [x] Supports login to Docker Hub with configured account password to access private mirrors on Docker Hub and solve the download frequency limitation of Docker Hub.\n- [x] Support custom configuration of proxy cache time(PROXY_TTL)、Support configuring IP whitelist and blacklist to prevent malicious attacks.\n- [x] Provides features for restarting services, updating services, updating configurations, and uninstalling services, making it convenient for users to perform daily management and maintenance.\n- [x] Supports user selection of whether to provide authentication during deployment.\n- [x] Supports configuration of proxy (HTTP_PROXY), only supports HTTP.\n- [x] Solves the problem of being unable to install Docker services in the domestic environment.\n- [x] Supports mainstream Linux distribution operating systems, such as CentOS, Ubuntu, Rocky, Debian, RHEL, etc.\n- [x] Supports deployment on mainstream ARCH architectures, including linux/amd64, linux/arm64.\n\n## ✨ Tutorial\n#### Configure Nginx Reverse Proxy\n\u003e **Note**： If you choose to deploy with Nginx, after the proxy program is deployed, you need to configure Nginx yourself.\u003cbr\u003e\n\n**1.Download the [registry-proxy.conf](https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/nginx/registry-proxy.conf) configuration file from the repository to your Nginx service and modify the domain name and certificate sections in the configuration** \u003cbr\u003e\n**2.Resolve the corresponding access domain name to the IP of the machine where the Docker proxy service is deployed at your DNS service provider** \u003cbr\u003e\n**3.Modify the Docker daemon.json configuration to configure your self-built Registry address. Restart Docker after modification**\n```shell\n~]# vim /etc/docker/daemon.json\n{\n    \"registry-mirrors\": [ \"https://hub.your_domain_name\" ],\n    \"log-opts\": {\n      \"max-size\": \"100m\",\n      \"max-file\": \"5\"\n    }\n}\n```\n\n\u003e **Explanation：** After configuring the daemon.json, you no longer need to specify your acceleration address when pulling images; simply execute docker pull to retrieve the images you need. The following steps are for when you have not configured the daemon.json, and you need to include your acceleration address to pull images normally.\n\n---\n\n**1. Replace the official Registry address with your own Registry address to pull the image.**\n```shell\n# Docker Hub Registry\n## Original: nginx:latest\n## Replace with:\ndocker pull hub.your_domain_name/library/nginx:latest\n\n# Google Registry\n## Original: gcr.io/google-containers/pause:3.1\n## Replace with:\ndocker pull gcr.your_domain_name/google-containers/pause:3.1\n```\n\n**2. Prefix replacement reference for the Registry.**\n\n| Source | Replace with | Platform |\n|-------|---------------|----------|\n| docker.io   | hub.your_domain_name   |  docker hub \n| gcr.io      | gcr.your_domain_name   |  Google Container Registry\n| ghcr.io     | ghcr.your_domain_name  |  GitHub Container Registry\n| k8s.gcr.io     | k8s-gcr.your_domain_name  | Kubernetes Container Registry\n| registry.k8s.io     | k8s.your_domain_name  | Kubernetes's container image registry\n| quay.io     | quay.your_domain_name  | Quay Container Registry\n| mcr.microsoft.com     | mcr.your_domain_name  | Microsoft Container Registry\n| docker.elastic.co     | elastic.your_domain_name  | Elastic Stack\n| nvcr.io    | nvcr.your_domain_name  | NVIDIA Container Registry\n\n---\n\n\u003e **Detailed Tutorial:**  \u003cbr\u003e\n\u003e [Self-built Docker Image Acceleration Service: Accelerating and Optimizing Image Management](https://www.dqzboy.com/8709.html) \u003cbr\u003e\n\u003e [Build your own Docker image acceleration, and host the domain name to CF to accelerate image pulling.](https://www.dqzboy.com/17665.html)\n\n## 📚 Display\n\u003cbr/\u003e\n\u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eSystem Environment Check\u003c/b\u003e\u003c/td\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eService Deployment and Installation\u003c/b\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"50%\" align=\"center\"\u003e\u003cimg src=\"https://github.com/dqzboy/Docker-Proxy/assets/42825450/55df7f6f-c788-4200-9bcd-631998dc53ef?raw=true\"\u003e\u003c/td\u003e\n        \u003ctd width=\"50%\" align=\"center\"\u003e\u003cimg src=https://github.com/dqzboy/Docker-Proxy/assets/42825450/c544fb1e-ecd5-447c-9661-0c5913586118?raw=true\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n## 💻 UI\n\u003cbr/\u003e\n\u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eDocker Registry UI\u003c/b\u003e\u003c/td\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003eDocker-Proxy CmdUI\u003c/b\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"50%\" align=\"center\"\u003e\u003cimg src=\"https://github.com/dqzboy/Docker-Proxy/assets/42825450/0ddb041b-64f6-4d93-b5bf-85ad3b53d0e0?raw=true\"\u003e\u003c/td\u003e\n        \u003ctd width=\"50%\" align=\"center\"\u003e\u003cimg src=\"https://github.com/user-attachments/assets/c7e368ca-7f1a-4311-9a10-a5f4f06d86d8?raw=true\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## 🫶 Sponsorship\nIf you find this project helpful, please give it a Star. And if possible, you can also give me a little support. Thank you very much for your support.😊\n\n\u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003e Alipay \u003c/b\u003e\u003c/td\u003e\n      \u003ctd width=\"50%\" align=\"center\"\u003e\u003cb\u003e WeChat Pay \u003c/b\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd width=\"50%\" align=\"center\"\u003e\u003cimg src=\"https://github.com/dqzboy/Deploy_K8sCluster/assets/42825450/223fd099-9433-468b-b490-f9807bdd2035?raw=true\"\u003e\u003c/td\u003e\n        \u003ctd width=\"50%\" align=\"center\"\u003e\u003cimg src=\"https://github.com/dqzboy/Deploy_K8sCluster/assets/42825450/9404460f-ea1b-446c-a0ae-6da96eb459e3?raw=true\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## 👨🏻‍💻 Issue\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eProblem Summary\u003c/strong\u003e\u003c/summary\u003e\n\u003cdiv\u003e\n\n\u003e Summary of common issues related to deployment and usage, welcome to add more！\n\nProblem Summary: [Click to view](Issue/issue.en.md)\n\n\u003c/details\u003e\n\n---\n\n## 😺 Other\n\nOpen Source is not easy, if you reference this project or make modifications based on it, could you please credit this project in your documentation? Thank you!\n\n\n## ❤ Acknowledgements\nThanks to the open source contributions of the following projects:\n\n[CNCF Distribution](https://distribution.github.io/distribution/) \n\n[docker-registry-browser](https://github.com/klausmeyer/docker-registry-browser)\n\n\n## 🤝 Contributing\n\nThanks to everyone who has contributed!\n\n\u003ca href=\"https://github.com/dqzboy/Docker-Proxy/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=dqzboy/Docker-Proxy\" /\u003e\n\u003c/a\u003e\n\n\n## License\nDocker-Proxy is available under the [Apache 2 license](./LICENSE)\n\n---\n\n[![Star History Chart](https://api.star-history.com/svg?repos=dqzboy/Docker-Proxy\u0026type=Date)](https://star-history.com/#dqzboy/Docker-Proxy\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdqzboy%2FDocker-Proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdqzboy%2FDocker-Proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdqzboy%2FDocker-Proxy/lists"}