当前位置: 首页 > backend >正文

破解Docker镜像下载难题

       由于网络访问限制,国内开发者访问 GitHub (https://github.com/) 存在明显延迟和稳定性问题。同时,部分国内镜像源近期也频繁出现服务不可用的情况,进一步增加了开发环境配置的难度。

       本文将介绍一种高效稳定的镜像同步方案,利用GitHub Actions + 阿里云容器镜像服务实现无缝下载。

1.镜像同步   通过GitHub Actions工作流自动拉取目标Docker镜像(利用GitHub境外服务器无障碍访问Docker Hub)将镜像自动推送至阿里云容器镜像服务(ACR)的私有仓库 
2.本地拉取阿里云ACR拉取镜像到本地开发环境,享受国内高速下载。

一、GitHub Workflow介绍

       GitHub Workflow(也称为 GitHub Actions Workflow)是 GitHub 提供的 自动化 CI/CD(持续集成/持续交付)工具,用于帮助开发者更高效地管理代码库中的开发流程。它通过GitHub Actions实现,允许开发者在代码库中定义和执行自动化任务,例如构建、测试、部署等。GitHub Workflow的核心思想是将开发流程中的重复性任务自动化,从而减少手动操作,提高开发效率和代码质量。

核心概念

  • GitHub Actions:GitHub提供的自动化平台,允许你创建自定义的工作流(Workflow)。它基于YAML文件配置,可以在特定事件(如 push、pull request 等)触发时执行任务。

  • Workflow:一个自动化流程,由一系列任务(Jobs)组成。每个Workflow对应一个 YAML文件,定义了触发条件、执行步骤和依赖关系。

  • Job:Workflow中的一个任务单元,通常包含一组步骤(Steps)。每个Job在一个独立的运行环境中执行,可以是虚拟机或容器。

  • Step:Job中的具体操作,例如运行命令、调用脚本或使用预定义的操作(Actions)。每个 Step 按顺序执行。

  • Event:触发Workflow的事件,例如代码提交(push)、拉取请求(pull request)、问题创建(issue)等。

  • Actions:预定义的可重用代码块,可以完成特定任务,例如构建代码、运行测试、部署应用等。GitHub 提供了官方Actions,也支持自定义Actions。

二、设置Github仓库workflow

1.新建一个github仓库

图片

2.设置Actions secrets

       设置需要登录阿里云的用户密码

图片

图片

图片

3.设置同步镜像仓库的脚本

       可以直接在github上面编辑,也可以git clone git@github.com:liuxing141/image_sync.git到本地,然后编辑。

图片

具体脚本如下sync.sh:

TARGET_REGISTRY: 阿里云容器镜像服务的Registry实例

TARGET_NAMESPACE: 阿里云容器镜像服务的命名空间

IMAGES: 要同步的镜像(本文中以Dify 1.3.0的几个镜像为例)

#!/bin/bashset -eux
TARGET_REGISTRY=registry.cn-hangzhou.aliyuncs.com
TARGET_NAMESPACE=liuxing666
IMAGES="langgenius/dify-api:1.3.0 langgenius/dify-web:1.3.0"for image in${IMAGES} ; do#拉取镜像docker pull $imagename=`echo$image | cut -d '/' -f2`tag=`echo${name} | cut -d ':' -f2`targetFullName=${TARGET_REGISTRY}/${TARGET_NAMESPACE}/${name}#打阿里云的tagdocker tag ${image}${targetFullName}#推送到阿里云docker push ${targetFullName}done

4.设置仓库workflow

图片

创建.github\workflows\sync.yaml

图片

具体代码如下sync.yaml:

name: Sync Docker Image
on:
push:branches: [ "main" ]
pull_request:branches: [ "main" ]workflow_dispatch:
jobs:# This workflow contains a single job called "build"
build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v4- name: login to docker registryrun: docker login -u "${{ secrets.DOCKER_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}" registry.cn-hangzhou.aliyuncs.com- name: execute sync.shrun: |bash "${{ github.workspace }}/sync.sh"

三、测试

       点击actions查看日志是否运行成功

图片

       成功后登录阿里云查看是否存在下载的镜像

图片

       发现已经有啦,然后自己就可以通过阿里云下载需要的镜像了。

# 登录
docker login --username=you_username registry.cn-hangzhou.aliyuncs.com
# 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/your_namespace/dify-api:1.3.0
# 创建本地tag
docker tag registry.cn-hangzhou.aliyuncs.com/your_namespace/dify-api:1.3.0 langgenius/dify-api:1.3.0

http://www.xdnf.cn/news/9402.html

相关文章:

  • 永磁同步电机控制算法--变结构PI调节器
  • 面向测试编程——SmartRefreshLayout的测试case
  • Ubuntu系统开放 45876/tcp 端口
  • Cookie、Session和Token鉴权
  • Python实用脚本:可视化分割txt标签数据
  • TWTSolutions水厂污水厂设计计算软件:化学强化絮凝单元
  • leetcode:1688. 比赛中的配对次数(python3解法,数学相关算法题)
  • ubuntu安装tigervnc
  • Python优雅执行SSH命令:10种方法+虚拟环境深度实践
  • 使用 mysqldump 获取 MySQL 表的完整创建 DDL
  • Spring AI(一)
  • windows 环境中 python连接到达梦库,及相关问题解决办法
  • TDengine 中的存储配置
  • 线程池详解:原理、使用与优化
  • 78. Subsets和90. Subsets II
  • Linux:基础指令与内涵理解(下)与权限
  • git 命令之-git cherry-pick
  • 短剧看广告APP系统开发:打造高效变现与用户体验双赢平台
  • 人工智能AI之机器学习基石系列 第 2 篇:数据为王——机器学习的燃料与预处理
  • JavaSE核心知识点04工具04-04(Git)
  • 专业教育机构视频网站平台播放器页面如何处理视频加密的?
  • [React]实现一个类zustand公共状态库
  • 2025上半年软考系统架构设计师选择题试题与答案
  • AI Agents执行流程和决策流程学习
  • 零基础设计模式——结构型模式 - 组合模式
  • RapidOCR4j项目学习
  • 润和星闪WS63E的MQTT示例程序存在的潜在问题
  • 经典查找算法合集(下)
  • 行为型:命令模式
  • 多语言实现插值查找算法