Skip to content

本项目旨在快速搭建一个基于 Docker 的私有仓库。起初,该项目仅用于创建一个 Docker 私有仓库,但现已扩展支持 `npm`、`Maven`、`PyPI` 等仓库,未来还将支持更多类型的仓库。用户无需担心代理问题,只需配置一个订阅,软件将自动配置到各个仓库使用,并且所有流量仅在对应容器中使用,确保安全和高效。

License

Notifications You must be signed in to change notification settings

shencangsheng/easy-registry-mirror

Repository files navigation

Swift Registry

简体中文 | English

本项目旨在快速搭建一个基于 Docker 的私有仓库。起初,该项目仅用于创建一个 Docker 私有仓库,但现已扩展支持 npmMavenPyPI 等仓库,未来还将支持更多类型的仓库。用户无需担心代理问题,只需配置一个订阅,软件将自动配置到各个仓库使用,并且所有流量仅在对应容器中使用,确保安全和高效。

🌟 特性

  • Docker
  • Maven
  • npm
  • PyPI
  • APT
  • Yum(RPM)
  • Cargo
  • Conda

🛠️ 安装

Docker
$ ./ctl docker install
npm
$ ./ctl npm install
Maven
$ ./ctl maven install
PyPI
$ ./ctl pypi install

💡 尝试

git clone https://github.com/shencangsheng/easy-registry-mirror.git
cd easy-registry-mirror
chmod +x ctl
./ctl help
./ctl docker help
./ctl docker install

📖 功能

  1. 代理 Docker registry
  2. 自动同步 Docker 镜像
  3. npm 私有仓库
  4. Maven 私有仓库
  5. PyPI 私有仓库
  6. npm fastestmirror

🔮 未来功能

  1. APT
  2. Yum(RPM)
  3. Cargo
  4. Conda
  5. Go registry
  6. Maven fastestmirror
  7. PyPi fastestmirror

📖 原理

该方案通过代理层处理所有 Docker 请求。对于拉取镜像的请求,代理层会先将镜像上传到私有 Docker Registry,然后再转发请求并响应。此策略避免了定期同步 Docker Hub 镜像带来的带宽和存储浪费。系统还支持根据预定义列表每周自动同步镜像。执行 ./ctl docker sync help 了解更多。

graph TD;
    A[Docker 请求] --> B[Docker registry 代理];
    B --> C{获取镜像请求?};
    C -- 是 --> D[拉取 Docker 镜像];
    C -- 否 --> E[Docker registry 服务器];
    D --> F[上传到 Docker registry];
    F --> E;
    E -- 响应 --> B;
    B -- 响应 --> A;
Loading

👍 依赖库

这些开源库用于创建本项目。

🤔 如何使用代理

已无法正常拉取 Dockerhub 镜像,下载项目所需要的基础镜像,运行 gunzip -c xxx.tar.gz | docker load 来载入镜像,./ctl proxy help 来了解如何使用代理

🤝 特别致谢

  1. fastestmirror 功能,特别感谢 RubyMetric/chsrc 项目提供的软件支持

📝 许可证

A short snippet describing the license (MIT)

MIT © Cangsheng Shen

About

本项目旨在快速搭建一个基于 Docker 的私有仓库。起初,该项目仅用于创建一个 Docker 私有仓库,但现已扩展支持 `npm`、`Maven`、`PyPI` 等仓库,未来还将支持更多类型的仓库。用户无需担心代理问题,只需配置一个订阅,软件将自动配置到各个仓库使用,并且所有流量仅在对应容器中使用,确保安全和高效。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published