AI在线 AI在线

彻底解决Docker镜像无法下载

前言Docker是一个开源容器化平台,它的核心作用是通过容器技术将应用程序及其依赖环境打包成一个轻量级、可移植的单元,从而简化开发、部署和运维流程。 例如我们可以通过Docker轻松部署Dify社区版,帮助开发者和企业快速构建、部署及管理生成式AI应用。 由于众所周知的限制,国内开发者访问Docker Hub面临诸多不便,且多个国内镜像源陆续出现了无法使用的情况。

彻底解决Docker镜像无法下载

前言

Docker是一个开源容器化平台,它的核心作用是通过容器技术将应用程序及其依赖环境打包成一个轻量级、可移植的单元,从而简化开发、部署和运维流程。例如我们可以通过Docker轻松部署Dify社区版,帮助开发者和企业快速构建、部署及管理生成式AI应用。

由于众所周知的限制,国内开发者访问Docker Hub面临诸多不便,且多个国内镜像源陆续出现了无法使用的情况。

本文介绍如何彻底解决Docker镜像无法下载的问题。主要流程为

  1. 通过GitHub Workflow把Docker镜像同步到阿里云容器镜像服务GitHub Workflow运行在GitHub的服务器上,可以无障碍下载Docker镜像
  2. 从阿里云容器镜像服务下载Docker镜像到本地

GitHub Workflow介绍

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

核心概念

  • GitHub ActionsGitHub Actions是GitHub提供的自动化平台,允许你创建自定义的工作流(Workflow)。它基于YAML文件配置,可以在特定事件(如 push、pull request 等)触发时执行任务。
  • WorkflowWorkflow是一个自动化流程,由一系列任务(Jobs)组成。每个Workflow对应一个 YAML文件,定义了触发条件、执行步骤和依赖关系。
  • JobJob是Workflow中的一个任务单元,通常包含一组步骤(Steps)。每个Job在一个独立的运行环境中执行,可以是虚拟机或容器。
  • StepStep是Job中的具体操作,例如运行命令、调用脚本或使用预定义的操作(Actions)。每个 Step 按顺序执行。
  • EventEvent是触发Workflow的事件,例如代码提交(push)、拉取请求(pull request)、问题创建(issue)等。
  • ActionsActions是预定义的可重用代码块,可以完成特定任务,例如构建代码、运行测试、部署应用等。GitHub 提供了官方Actions,也支持自定义Actions。

设置阿里云容器镜像服务

创建命名空间

打开https://cr.console.aliyun.com/cn-hangzhou/instance/namespaces ,在个人版实例创建命名空间。

彻底解决Docker镜像无法下载

填写命名空间,然后点击“确定”

彻底解决Docker镜像无法下载

设置访问凭证

打开https://cr.console.aliyun.com/cn-hangzhou/instance/credentials ,这里可以看到登录的Registry实例(registry.cn-hangzhou.aliyuncs.com)。

点击“设置固定密码”

imageimage

设置Github仓库workflow

新建Github仓库

打开https://github.com/new , 输入仓库名,类型选择Private,并添加README文件

彻底解决Docker镜像无法下载

设置Actions secrets

进入Actions secrets设置页,点击"New repository secret"

彻底解决Docker镜像无法下载

建立DOCKER_USERNAME和DOCKER_PASSWORD两个secret,对应阿里云容器镜像服务的登录账号和密码

image

设置仓库workflow

checkout代码到本地。在代码目录下创建文件.github\workflows\sync.yaml,内容如下:

name: Sync Docker Image
run-name: ${{ github.actor }} is running GitHub Actions
on: [push]
jobs:
  Sync-Docker-Image-Actions:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository code
        uses: actions/checkout@v4
      - name: login to docker registry
        run: |
          docker login -u "${{ secrets.DOCKER_USERNAME }}" -p "${{ secrets.DOCKER_PASSWORD }}" registry.cn-hangzhou.aliyuncs.com
      - name: execute sync.sh
        run: |
          bash "${{ github.workspace }}/sync.sh"
      - run: echo "This job's status is ${{ job.status }}"

yaml定义的主体流程是

  • checkout代码
  • 登录到阿里云docker registry
  • 调用sync.sh作同步操作

在代码目录下创建sync.sh,注意按需调整以下几个变量

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

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

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

sync.sh脚本如下:

#!/bin/bash
set -eux

TARGET_REGISTRY=registry.cn-hangzhou.aliyuncs.com
TARGET_NAMESPACE=your_namespace
IMAGES="langgenius/dify-api:1.3.0 langgenius/dify-web:1.3.0 langgenius/dify-plugin-daemon:0.0.8-local"

for image in ${IMAGES};do
    # 拉取镜像
    docker pull $image
    name=`echo ${image} | cut -d '/' -f2`
    tag=`echo ${name} | cut -d ':' -f2`
    targetFullName=${TARGET_REGISTRY}/${TARGET_NAMESPACE}/${name}
    # 打阿里云的tag
    docker tag ${image} ${targetFullName}
    # 推送到阿里云
    docker push ${targetFullName}
done

提交本地仓库改动到Github

git add .
git commit -m "add workflow"
git push

验证workflow

提交本地仓库改动到Github后,验证workflow的正确性

查看Actions workflow日志

imageimage

查看阿里云容器镜像服务的镜像版本

打开https://cr.console.aliyun.com/cn-hangzhou/instance/repositories ,可以看到自动创建了相应的镜像仓库

彻底解决Docker镜像无法下载

点击“管理”,可查看镜像版本

image

彻底解决Docker镜像无法下载还可以查看拉取镜像的命令

image

下载镜像到本地

把命令中的your_namespace替换为你创建的命名空间。

# 登录
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

总结

至此,我们完成了Docker镜像同步的全流程。后续要同步其它镜像,只需要修改sync.sh的IMAGES变量并提交。

相关资讯

Deepseek本地部署,培养自己的独有的AI伴侣!

目前我们所知道的AI大部分都是在网页或者APP上直接使用,缺少其独特性,deepseek支持将AI部署在我们的本地电脑,只要你得性能够,就可以创造一个独属于你自己的AI伴侣。 废话不多说直接上操作! 一、配置要求1.
2/8/2025 11:07:35 AM
麋鹿vs

如何将机器学习模型部署到生产环境?

译者 | 布加迪审校 | 重楼开发机器学习模型只完成了一半工作。 除非部署到生产环境、提供业务价值,否则模型仍然毫无用处。 知道如何部署自己的模型已成为任何数据科学家的一项基本技能,许多雇主已经要求我们能做到这一点。
2/17/2025 8:00:00 AM
布加迪

超实用!手把手教你Dify版本升级

很多情况下,我们需要升级 Dify 版本以获得新的功能和性能的提升,同时还能确保系统的安全性、稳定性和兼容性,从而更好地满足用户的需求。 那问题来了,怎么升级 Dify 版本呢? 接下来,我们以 Docker 方式安装 Dify 的升级为例,给大家演示一下升级的流程和注意事项,当然源码安装的升级方式也是类似的,升级思路都相同的,只是具体的操作可能略有不同。
6/12/2025 10:27:02 AM
磊哥
  • 1