Docker无法拉取镜像!如何解决?

news2024/11/26 22:48:25

问题现象

  • 继去年Docker Hub被xxx后,各大NAS的注册表均出现问题,例如群晖的Docker套件注册表无法连接(更新至DSM7.2版本后恢复)。
  • 而在今年2024年6月初(约2024.06.06),NAS中最重要的工具Docker又面临无法使用的问题。
  • 常用镜像站:阿里云、科大、南大、上交等,全部挂掉。
  • 执行docker pull命令拉取docker镜像时无反应,一直在循环尝试。

猜测原因

  • 下面的说法来源于网络
  • 2024.06.06,上海交大的Docker Hub镜像加速器宣布因为监管要求被下架。
  • index服务器被DNS污染,导致无法拉取镜像。
  • 做好全面脱钩的准备
  • 自主知识产权的国产Docker将会横空出世
  • 临时性管控(过段时间就恢复)
  • 全面清理Docker Hub中被恶意植入的文件
  • 以及等等说法~

如何解决?

        使用Github Action 优雅的同步Docker Hub的镜像到阿里云个人镜像仓库中,再从阿里云个人镜像仓库中直接拉取镜像,就能完美的解决docker不能拉取镜像的问题.

Github Action 是什么?

        GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。

        GitHub Actions 不仅仅是 DevOps,还允许您在存储库中发生其他事件时运行工作流程。 例如,您可以运行工作流程,以便在有人在您的存储库中创建新问题时自动添加相应的标签。

        使用 Github Action,开发人员可以自动执行各种任务,以便更加高效地管理和自动化他们的开发工作流程,减少手动操作和人为错误,提高开发效率和代码质量

参考地址: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions

操作流程

      1.在阿里云创建个人镜像仓库。

       1.1  登录容器镜像服务控制台,点击创建个人实例。

       1.2 点击个人实例,进入仓库管理

        

        1.3 点击左侧命名空间,创建命名空间。

         1.4 点击左侧访问凭证,设置固定密码,其中用户名,仓库地址和固定密码,在下面会用到。

2. 在 Github 创建 Github Action 拉取镜像脚本

        2.1 在Github中创建账户以及仓库,此处作者创建的仓库名为docker-images,并在目录下创建一个.github/workflows 目录用于存放Github Action 镜像拉取同步脚本,如下图所示

项目地址:GitHub - yongheng1065/docker-images: Github Action 拉取国外镜像

2.2 之后,创建一个sync-image-example.yml及其内容,如下所示:

 内容详情如下:

# 1.首先,在workflow文件中定义触发器,例如每次推送到主分支时触发同步操作。
# 工作流名称
name: Sync Image to Aliyun  Example

# 怎样触发工作流
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

# 2.添加一个job来执行同步操作。在workflow文件中,添加一个job 并指定使用的操作系统环境。
# 工作流程任务(通常含有一个或多个步骤)
jobs:
  build:
    runs-on: ubuntu-latest

    # 在job中添加步骤来执行同步操作。在上述job中,添加步骤来执行skopeo命令,从docker.io仓库拉取镜像,并将其推送到阿里云个人仓库。
    steps:
    - name: Git pull
      uses: actions/checkout@v3

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v2.9.1
      
    # 设置项目Secrets以提供Docker Hub登录所需的用户名和密码。
    - name: Login to Docker Hub
      uses: docker/login-action@v2.2.0
      with:
        registry: registry.cn-guangzhou.aliyuncs.com
        username: ${{secrets.DOCKER_USERNAME}}
        password: ${{secrets.DOCKER_PASSWORD}}
        logout: false

    # 使用shell命令批量同步所需的镜像到阿里云个人仓库中
    - name: Use Skopeo Tools Sync Image to Docker Hub
      run: |
        # 使用 skopeo 工具将镜像同步到阿里云个人仓库中,使用时请自行源和目标修改仓库名称和镜像名称
         skopeo copy docker://docker.io/userxy2015/ngnix:latest docker://registry.cn-guangzhou.aliyuncs.com/gorgor1065/ngnix:latest

   2.3 在 Github中设置username和password的秘钥值

        2.3.1 首先点击Settings。

        2.3.2 点击 Secrets and variables --》 Actions --》Secrets --》 New repository secret 创建用户名和密码的变量,值是在上面1.4步骤的页面获取。

2.4 上面的sync-image-example.yml配置中,最后一行,使用skopeo工具将镜像同步到个人仓库的时候,需要修改源镜像名称和同步到个人仓库时的镜像名称。

        2.4.1 docker://docker.io/userxy2015/ngnix:latest:dockerhub仓库的镜像,你需要什么镜像,就需要访问dockerhub官网,搜索对应的镜像,然后替换掉docker://docker.io/userxy2015/ngnix:latest的地址,如果你要同步mysql到阿里云的个人仓库,则地址就写成docker://docker.io/mysql:5.5.42 就可以。

        2.4.2 docker://registry.cn-guangzhou.aliyuncs.com/gorgor1065/ngnix:latest: 同步到个人仓库的地址。此地址需要在 步骤1.4 中获取仓库地址拼上 步骤1.3 中的命名空间,再拼上同步到个人仓库的镜像名称就可以。

3. 点击Actions 运行脚本,将dockerhub的镜像拉取到阿里云个人仓库中。但点击Actions时需要注意,每次都要有commit之后,点击Actions才其效果。

 运行成功如下面那样,会有绿色的√

此时在阿里云个人仓库就会有我们从国外dockerhub拉取的nginx。

 再点击ngnix,就会显示ngnix镜像的基本信息,就可以在我们服务器中从我们个人仓库中拉取惊喜镜像。

 在服务中,从阿里云个人仓库拉取镜像,可以看出可以正常的拉取了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1941186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决git拉取代码报错:Couldn‘t connect to server

前言: 今天在拉取git仓库代码的时候,报错:fatal: unable to access https://codeup.aliyun.com/fly/business-project/lezhi-HR.git/: Failed to connect to 127.0.0.1 port 8020 after 2082 ms: Couldnt connect to server 错误截图&#…

mysql中的索引和分区

目录 1.编写目的 2.索引 2.1 创建方法 2.2 最佳适用 2.3 索引相关语句 3.分区 3.1 创建方法 3.2 最佳适用 Welcome to Code Blocks blog 本篇文章主要介绍了 [Mysql中的分区和索引] ❤博主广交技术好友,喜欢文章的可以关注一下❤ 1.编写目的 在MySQL中&…

函数调用过程

生成机器码.o文件,使用objdump - d -M intel hello_func.o来看汇编代码 栈内存由于历史原因看作是从高地址往低地址扩张所以栈底为高地址,栈顶为低地址。 rbp存储的时当前栈帧的基地址,栈底地址。 rsp存储的是栈顶地址,rip存储…

【计算机网络】TCP/IP——流量控制与拥塞控制

学习日期:2024.7.22 内容摘要:TCP的流量控制与拥塞控制 流量控制 一般来说,我们总是希望数据传输的快一些,但是如果数据传输的太快,接收方可能就来不及接收,这就会导致数据的丢失,流量控制正是…

【代码随想录】【算法训练营】【第58天 4】 [卡码104]建造最大岛屿

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 58,周四,ding~ 题目详情 [卡码104] 建造最大岛屿 题目描述 卡码104 建造最大岛屿 LeetCode类似题目827 最大人工岛 解题思路 前提: 思路: 重点…

压缩pdf大小的方法 指定大小软件且清晰

在数字化时代,pdf文件因其良好的兼容性和稳定性,已成为文档分享的主流格式。然而,高版本的pdf文件往往体积较大,传输和存储都相对困难。本文将为您详细介绍几种简单有效的方法,帮助您减小pdf文件的大小,让您…

基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线

基于STM32单片机生理监控心率脉搏TFT彩屏波形曲线 1、系统功能介绍2、演示视频3、系统框图4、系统电路介绍4.1、STM32单片机最小系统设计4.2、按键电路设计4.3、蜂鸣器报警电路设计4.4、Pulsesensor脉搏心率传感器模块电路设计 5、程序设计5.1、LCD TFT屏幕初始化5.2、TFT屏幕显…

【性能优化】在大批量数据下使用 HTML+CSS实现走马灯,防止页面卡顿(一)

切换效果 页面结构变化 1.需求背景 项目首页存有一个小的轮播模块,保密原因大概只能这么展示,左侧图片右侧文字,后端一次性返回几百条数据(开发环境下,生产环境只会更多).无法使用分页解决,前端需要懒加载防止页面卡顿 写个小demo演示,如下 2.解决思路 获取到数据后,取第一…

《JavaSE》---21.<简单认识Java的集合框架包装类泛型>

目录 前言 一、什么是集合框架 1.1类和接口总览 二、集合框架的重要性 2.1 开发中的使用 2.2 笔试及面试题 三、背后所涉及的数据结构 3.1 什么是数据结构 3.2 容器背后对应的数据结构 四、包装类 4.1 基本数据类型和对应的包装类 4.2 装箱和拆箱 1.最初的写法 2.…

向量数据库|一文全面了解向量数据库的基本概念、原理、算法、选型

向量数据库的原理和实现,包括向量数据库的基本概念、相似性搜索算法、相似性测量算法、过滤算法和向量数据库的选型等等。向量数据库是崭新的领域,目前大部分向量数据库公司的估值乘着 AI 和 GPT 的东风从而飞速的增长,但是在实际的业务场景中…

NodeRed测试modbus RTU或modbus TCP通讯

目录标题 STEP1 添加modbus节点STEP2 查看是否安装成功STEP3 modbusTCP读取写入设置读取设置写入设置 STEP4 读写测试 STEP1 添加modbus节点 节点管理——控制板——安装 找到node-red-contrib-modbus,点击安装 STEP2 查看是否安装成功 安装成功后,左…

Day14 | 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树

语言 Java 找树左下角的值 题目链接:找树左下角的值 题目 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 思路 本题有两种做法我主要讲一下递归的思路,创建两个全局变量&…

blender使用(三)常用建模操作及修改器

1,挤出图形 tab编辑模式,选中一个点/线/面,按键E,可以挤出对应的图形。选中点会挤出一条线,线会挤出一个面,面挤出体 2,倒角 选中一个边后,ctrlB ,拖动鼠标是倒角范围&am…

MINIO集群部署手册

为了满足电子仓库功能相关部署与扩容等操作,因此提供电子仓库部署手册。手册中我们以2个minio节点,每个节点2个盘来进行分布式部署;并且最终扩容成4个节点每个节点2个盘。 操作系统 由于在Windows下运行分布式Minio处于实验阶段,因…

Web前端浅谈ArkTS组件开发

本文由JS老狗原创。 有幸参与本厂APP的鸿蒙化改造,学习了ArkTS以及IDE的相关知识,并有机会在ISSUE上与鸿蒙各路大佬交流,获益颇丰。 本篇文章将从一个Web前端的视角出发,浅谈ArkTS组件开发的基础问题,比如属性传递、插…

定积分与不定积分

定积分与不定积分 引言正文不定积分理解角度1理解角度2 定积分 引言 可能大家看到这个标题会不屑一顾,觉得这个还用你教我吗,高等数学最简单的内容。今天突然想到一个问题,就是为什么不定积分会有一个常数 C C C 出现,这个常数 …

继电器驱动电路的可靠性设计分析

在温度-30℃到85℃、供电电源9V-16V范围条件下,保证外部继电器能正常作动,且不发生负载能力降低的情况。(注:需要详细的外部继电器规格说明) 对于控制多路输出而且要求负载同时打开的模块,必须以50ms(10ms…

C++_单例模式

目录 1、饿汉方式实现单例 2、懒汉方式实现单例 3、单例模式的总结 结语 前言: 在C中有许多设计模式,单例模式就是其中的一种,该模式主要针对类而设计,确保在一个进程下该类只能实例化出一个对象,因此名为单例。而…

OpenCV 图像旋转和平移 数学和代码原理详解

文章目录 数学原理旋转矩阵平移和旋转合成变换矩阵应用在OpenCV中的实现 代码关键点解读完整代码C代码:Python代码: 在OpenCV中进行图像旋转涉及到一些基本的几何变换和图像处理操作。 数学原理 在图像旋转中,背后的数学原理主要涉及二维欧…

嵌入式硬件-Xilinx FPGA DDR4 接口配置基础(PG150)

1. 简介 1.1 DDR4 SDRAM 控制器主要特点 支持8到80位接口宽度的组件(支持 RDIMM、LRDIMM、UDIMM 和 SODIMM) 最大组件限制为9,此限制仅适用于组件,不适用于 DIMM。密度支持 最高支持 32 GB 的组件密度,64 GB 的 LRDI…