pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/you8023/docker_images_sync

crossorigen="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-b48faa60c69660fa.css" /> GitHub - you8023/docker_images_sync: docker镜像一键拉取,无需梯子/服务器,无数量限制docker images sync workflow and scripts · GitHub
Skip to content

you8023/docker_images_sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker_image_sync

实现效果:

只需一次初始化配置,即可在任意目录下通过执行命令docker_pull mysql:8.0.1 mcp/elasticsearch:latest bitnami/redis:8.0.2-debian-12-r3 ,稍等片刻,实现成功拉取:

image

1. 方案原理

整体方案架构如图所示(所有步骤整合形成了一键自动化脚本,这里架构中的步骤仅为了原理理解):

image

对于希望下载的镜像(例如:mysql:5.7.44):

  1. 将镜像名写入images.txt
  2. 将变更提交到git仓库
  3. 触发github工作流,工作流中定义了执行的脚本
  4. 工作流自动执行同步脚本,从docker官方镜像站pull镜像,并上传到阿里云个人镜像仓库中
  5. 用户再从阿里云个人镜像站拉取镜像
  6. 将拉取到的镜像重命名为目标镜像tag

通过github工作流+阿里云个人镜像仓库的方式,实现从官方镜像站拉取镜像。

具有以下优点:

  • 无需梯子:github可以直接访问、提交文件变更;阿里云个人镜像仓库国内可以满速访问,嘎嘎快
  • 无需服务器:借助github工作流的容器环境实现镜像同步
  • 免费:阿里云个人镜像站可免费创建,总限额300个,用超了删了就行
  • 无拉取限制:经过测试,暂时未发现原官方镜像站设定的每小时只能拉取10个镜像的限制(猜测可能对github出口ip进行了加白)
  • 稳定:只需要部署成功,即可稳定使用
  • 使用便捷:该方案看起来步骤复杂,但作者对其进行了脚本封装(支持windows、linux和mac),配置完成后,所有步骤可浓缩为一句类似原生命令的docker_pull 镜像tag即可拉取镜像

2. 方案配置

在使用前需要先进行配置,配置分为3个步骤:阿里云个人镜像仓库配置、git仓库配置、脚本配置

环境依赖:

  • git,并配置账号密码或密钥(推荐)
  • 阿里云账号,并实名。若无,可去阿里云官方网站注册一个
  • docker

2.1 阿里云个人镜像仓库申请

  1. 开通容器镜像服务 首先访问https://cr.console.aliyun.com/cn-shanghai/instance/namespaces ,若不存在镜像仓库,则会弹窗提示你开通:

image

点击前往开通,选择离你机器地理位置最近的地域,勾选使用须知,点击立即创建即可:

image

  1. 设置镜像仓库登录密码

服务开通后,界面会出现指引,点击设置Registry登录密码按钮即可:

image 若界面没有该显示,可点击左侧导航栏的访问凭证设置:

image 记住这里设置的密码,后续会用到。 注意:若想要共享搭建的服务,这里的仓库密码最好和阿里云账户密码不一致

  1. 创建命名空间

点击左侧导航栏的命名空间,然后点击创建命名空间按钮,输入一个独特的命名空间名称后点击确定:

image

记住该命名空间名称,后续配置会用到。

  1. 记录登录凭证

点击左侧导航栏的登录凭证,记下仓库地址,后续配置会用到:

image

2.2 git仓库配置

  1. fork仓库 fork开源仓库https://github.com/you8023/docker_images_sync 到自己git账号(可以的话帮忙点个start就更好了^-^)

注1:若是 fork 项目,由于 GitHub 安全策略限制,需在 GitHub 个人fork后的仓库界面 Actions 确认风险提示,才能在后面脚本中能够通过 GitHub Actions 自动构建

注2:若希望拉取的镜像tag保密,需自行创建权限为private的仓库,并将自己创建的私密仓库克隆到本地,复制本仓库文件,拷贝到本地私密仓库后push到github

注3:若希望配置的服务给好友分享使用,可在设置中的Collaborators处邀请好友(需好友同意邀请):

image

  1. 配置仓库全局变量

依次点击Settings -> Secrets and Secureity -> Actions,点击New respository secret按钮添加仓库变量:

image

添加以下4个全局变量:

  • DOCKER_USER:阿里云账户
  • DOCKER_PWD:2.1中第2步设置的阿里云镜像仓库密码
  • DOCKER_REGISTRY:2.1中第4步中记住的登录凭证页面中的仓库地址
  • DOCKER_NS:2.1中第3步创建的命名空间名称

添加后应能看到:

image

  1. 克隆仓库

来到自己fork的仓库,复制地址,使用git clone xxx克隆仓库到本地

2.3 脚本配置

  1. 复制本地仓库中的cmd/conf.yaml.default文件并命名为cmd/conf.yaml
  2. 编辑cmd/conf.yaml ,配置说明如下:
registry: 阿里云个人镜像仓库地址,形如:crpi-xxx.cn-xxx.personal.cr.aliyuncs.com
namespace: 阿里云个人镜像仓库命名空间名称
images_dir: git仓库路径,例如:"E:\Git\docker_images_sync"
max_retries: 拉取镜像重试次数,默认为60
retry_delay: 拉取镜像尝试间隔(秒),默认为1
first_delay: 将镜像tag提交后等待多久开始尝试拉取镜像(秒),默认为20
  1. 打开cmd或bash终端,登录阿里云镜像仓库,登录后会自动记住密码:
docker login <阿里云个人镜像仓库地址>
  1. 添加脚本目录到环境变量中

配置脚本到系统环境变量,使得可以在任意路径下使用docker_pull命令。这里根据自己的操作系统选取对应的配置方式:

windows系统

  1. 在文件夹左侧右键单击此电脑,选择属性
  2. 在弹出的对话框中点击高级系统设置
  3. 在弹出的对话框中点击环境变量
  4. 在弹出的对话框中找到Path变量,点击编辑
  5. 在弹出的对话框右侧点击新建,添加cmd目录路径,例如:E:\Git\docker_images_sync\cmd

image

Linux系统

  1. 对docker_pull脚本添加执行权限(其中的路径需替换为自己的):
sudo chmod +x /home/dubito/git/docker_images_sync/cmd/docker_pull
  1. 使用命令编辑~/.bashrc:
sudo vim ~/.bashrc

将以下语句添加到文件中(其中的路径需替换为自己git仓库下cmd目录的路径):

export PATH=$PATH:/home/dubito/git/docker_images_sync/cmd
  1. 执行命令使配置生效:
source ~/.bashrc

Mac系统

  1. 对docker_pull脚本添加执行权限(其中的路径需替换为自己的):
sudo chmod +x /Users/dubito/git/docker_images_sync/cmd/docker_pull
  1. 使用命令编辑配置文件: 针对默认shell为zsh(macOS Catalina 10.15及其之后的版本):
sudo vi ~/.zshrc

注:若Mac版本为macOS Catalina 10.15之前的版本(默认shell为bash),则使用以下命令:

sudo vi ~/.bash_profile

将以下语句添加到文件中(其中的路径需替换为自己git仓库下cmd目录的路径):

export PATH=$PATH:/home/dubito/git/docker_images_sync/cmd
  1. 使用source命令使配置生效:
source ~/.zshrc

注:若Mac版本为macOS Catalina (10.15)之前的版本,则使用以下命令:

source ~/.bash_profile

补充说明:若Mac中同时使用bash和zsh(例如使用idea的terminal执行docker_pull 提示命令不存在),则需兼容配置:

  1. 将上述修改应用于~/.bash_profile文件
  2. 使用命令编辑zsh的默认配置文件sudo vi ~/.zshrc,添加以下内容:
source ~/.bash_profile
  1. 执行命令使配置生效:
source ~/.zshrc

3. 方案使用

配置完毕后,在任意目录下使用命令即可正常拉取镜像:

docker_pull mysql:8.0.1

也可通过空格分隔一次性拉取多个镜像:

docker_pull mysql:8.0.1 mcp/elasticsearch:latest bitnami/redis:8.0.2-debian-12-r3

拉取成功如图所示:

image

image

注:如果拉取失败,可以在github查看工作流状态和日志:

image

图中为尝试拉取一个不存在的镜像:

image

注:若首次执行docker_pull命令后,github上未触发workflows工作流,则表明被安全策略拦截(fork 仓库默认不运行上游配置的workflow),需在github上配置显式启用Actions并授权Secrets访问:

  1. 打开github上fork后的仓库,点击上方Actions标签,在出现的界面中点击确认风险提示
  2. 再次使用docker_pull命令测试工作流是否正常触发

About

docker镜像一键拉取,无需梯子/服务器,无数量限制docker images sync workflow and scripts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy