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

问题现象

  • 继去年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镜像的基本信息,就可以在我们服务器中从我们个人仓库中拉取惊喜镜像。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RV1126 Linux 系统,接外设,时好时坏(二)排查问题的常用命令

在 RV1126 Linux 系统中,排查外设连接问题时,可以使用多种命令来诊断和调试。以下是一些常用的命令和工具: 1. 查看系统日志 dmesg: 显示内核环形缓冲区的消息,通常包含设备初始化、驱动加载和错误等信息。 dmesg | grep <设备名或相关关键字>journalctl: 查看系统…

内网横向:PTHPTKPTT

1.PHT横向 2.PTK横向 3.PTT横向 1.PHT横向&#xff1a; 条件&#xff1a;有管理员的NTLM Hash 并且目标机器开 放445端口 在工作组环境中&#xff1a; Windows Vista 之前的机器&#xff0c;可以使用本地管理员组内用户进行攻击。 WindowsVista 之后的机器&#xff0c;只能是…

怎么将图片转为pdf?教你5种图片转pdf小技巧

在日常的学习办公中&#xff0c;图片转PDF的需求日益增多&#xff0c;无论是整理旅行照片、工作报告还是学习资料&#xff0c;将图片转换为PDF格式都能让文件更加规范、易于分享和保存。下面给大家分享5种能够将图片转为PDF格式的方法&#xff0c;让你的文档处理变得轻松又高效…

HTTP 缓存

缓存 web缓存是可以自动保存常见的文档副本的HTTP设备&#xff0c;当web请求抵达缓存时&#xff0c;如果本地有已经缓存的副本&#xff0c;就可以从本地存储设备而不是从原始服务器中提取这个文档。使用缓存有如下的优先。 缓存减少了冗余的数据传输缓存环节了网络瓶颈的问题…

UI界面卡顿检测工具--UIHaltDetector

引言&#xff1a; 在日常工作当中&#xff0c;我们经常会遇到软件的界面出现卡顿的问题&#xff0c;而为了确定卡顿原因&#xff0c;我特地写了一个UI界面卡顿的小工具&#xff1a;UIHaltDetector&#xff1b;该工具可以在检测到目标窗口出现卡顿的时候直接打印堆栈日志和输出…

Android 15 适配整理——实践版

背景 谷歌发布Android 15后&#xff0c;国内的手机厂商迅速行动&#xff0c;开始了新系统的适配工作。小米、OPPO、vivo和联想等金标联盟成员联合发布了适配公告&#xff0c;督促APP开发者在2024年8月31日前完成适配工作&#xff0c;否则将面临搜索标签提示、应用降级、分机型…

邮件安全篇:邮件反垃圾系统运作机制简介

1. 什么是邮件反垃圾系统&#xff1f; 邮件反垃圾系统是一种专门设计用于检测、过滤和阻止垃圾邮件的技术解决方案。用于保护用户的邮箱免受未经请求的商业广告、诈骗信息、恶意软件、钓鱼攻击和其他非用户意愿接收的电子邮件的侵扰。 反垃圾系统的常见部署形式 2. 邮件反垃圾…

win11 安装 Gradle

一、win11 安装Gradle(7.5.1)&#xff1a; 1.1、下载二进制包 Gradle下载页面 1.2、配置环境变量 变量名&#xff1a;GRADLE_HOME 变量值&#xff08;二进制包解压路径&#xff09;&#xff1a;D:\develop-tool\gradle-7.5.1 变量名&#xff1a;GRADLE_USER_HOME 变量值&a…

6 C 语言指针的奥秘:理论与实践详解

目录 1 变量访问机制 1.1 内存地址 1.2 变量的直接访问 1.3 变量的间接访问 2 指针变量及其内存大小 2.1 指针与指针变量 2.2 指针变量的定义格式 2.3 指针变量的内存大小 3 取地址操作符与取值操作符 3.1 取地址操作符 & 3.2 取值操作符 * 3.3 解引用与数据类…

Android APP CameraX应用(02)预览流程

说明&#xff1a;camera子系统 系列文章针对Android12.0系统&#xff0c;主要针对 camerax API框架进行解读。 1 CameraX简介 1.1 CameraX 预览流程简要解读 CameraX 是 Android 上的一个 Jetpack 支持库&#xff0c;它提供了一套统一的 API 来处理相机功能&#xff0c;无论 …

基于微信小程序的高校排课系统 /基于微信小程序的排课管理系统/课程管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

PE文件(十二)导入表

导入表 导入表的引入 当一个PE文件&#xff08;如.dll/.exe等&#xff09;需要使用别的模块的函数&#xff0c;也叫做依赖某模块&#xff0c;就需要一个清单来记录使用的模块&#xff08;一般为.dll文件&#xff0c;为方便理解&#xff0c;以后我们将模块都认为是.dll文件&am…

electron安装及快速创建

electron安装及快速创建 electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 详细内容见官网&#xff1a;https://www.electronjs.org/zh/docs/latest/。 今天来记录下练习中的安装过程和hello world的创建。 创建项目文件夹&#xff0c;并执行npm 初始化命…

将iPad 作为Windows电脑副屏的几种方法(二)

将iPad 作为Windows电脑副屏的几种方法&#xff08;二&#xff09; 1. 前言2. EV 扩展屏2.1 概述2.2 下载、安装、连接教程2.3 遇到的问题和解决方法2.3.1 平板连接不上电脑 3. Twomon SE3.1 概述3.2 下载安装教程 4. 多屏中心&#xff08;GlideX&#xff09;4.1 概述4.2 下载安…

东莞网站建设前期需要做好哪些工作

在进行东莞网站建设前&#xff0c;需要做好一系列的前期工作。这些工作的实施将为网站建设奠定坚实的基础&#xff0c;确保项目能够按计划顺利进行&#xff0c;并最终达到预期的目标。 首先&#xff0c;需要明确网站的定位和目标。东莞是一个经济发达的城市&#xff0c;因此&am…

Oracle系统表空间的加解密

实验环境 数据库选择的是orclpdb1&#xff0c;当前系统表空间未加密&#xff1a; SQL> show con_nameCON_NAME ------------------------------ ORCLPDB1SQL> select TABLESPACE_NAME, STATUS, ENCRYPTED from dba_tablespaces;TABLESPACE_NAME STATUS …

docker搭建python3的私有源--devpi

一、部署 # docker run -d --name devpi-lib -p 7104:7104 --env DEVPISERVER_HOST0.0.0.0 --env DEVPISERVER_PORT7104 --env DEVPISERVER_ROOT_PASSWORDpassword --env DEVPISERVER_USERlowinli --env DEVPISERVER_PASSWORDpassword --env DEVPISERVER_MIRROR_INDEXpypi --…

SAP PP学习笔记31 - 计划运行的步骤2 - Scheduling(日程计算),BOM Explosion(BOM展开)

上一章讲了计划运行的5大步骤中的前两步&#xff0c;计算净需求和计算批量大小。 SAP PP学习笔记30 - 计划运行的步骤1 - Net requirements calculation 计算净需求(主要讲了安全库存要素)&#xff0c;Lot-size calculation 计算批量大小-CSDN博客 本章继续讲计划运行的后面几…

【快速逆向二/无过程/有源码】掌上高考—2024高考志愿填报服务平台

逆向日期&#xff1a;2024.07.21 使用工具&#xff1a;Node.js 加密工具&#xff1a;Crypto-js标准库 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&…

spring-boot3.x整合Swagger 3 (OpenAPI 3) +knife4j

1.简介 OpenAPI阶段的Swagger也被称为Swagger 3.0。在Swagger 2.0后&#xff0c;Swagger规范正式更名为OpenAPI规范&#xff0c;并且根据OpenAPI规范的版本号进行了更新。因此&#xff0c;Swagger 3.0对应的就是OpenAPI 3.0版本&#xff0c;它是Swagger在OpenAPI阶段推出的一个…