Docker镜像下载-使用github action- 解决无法下载docker镜像的问题

news2024/11/17 11:55:37

最近不知道怎么jdk的本地镜像被不小心干掉了,然后action全部失败。服务器也不能从远程拉取镜像
在这里插入图片描述

由于国内已经无法从docker官方源下载镜像了,但是这个自动化运维的需求还是有的。其实有很多种方法,但是都很麻烦。

这里我写的docker compose执行部署任务的时候会拉取远程的jdk,但是无法连接远程的docker仓库,不过docker的拉取机制是先寻找本地的镜像,如果没有再去拉取
在这里插入图片描述

目前有好几种方案下载镜像源

  1. 第一种是挂代理下载这个,这个需要在服务器上配置代理,这个方案很麻烦。所以被我放弃了,
  2. 第二种是使用国内镜像源,不过在前不久,docker国内镜像源也全部失效了。所以这条路也走不通
  3. 第三种是在本地下载镜像源,然后上传到服务器上。不过这种问题是,本机的架构和服务器架构不一致,然后无法运行,像是我上面这图一样。我用的mac是arm64架构,而公司服务器使用的x86_64 x86_64 GNU/Linux

如此看来,还是使用第三种方案好,只需要解决架构不一致导致下载镜像不一样无法运行问题。

下载镜像到远程服务器 github action文件如下

name: DEV Pull Docker Image

on:
  workflow_dispatch:
    inputs:
      image_name:
        description: 'The name of the Docker image to pull'
        required: true
      image_tag:
        description: 'The tag of the Docker image to pull'
        required: true

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      # Pull Docker image from remote repository
      - name: Pull Docker image
        run: |
          docker pull ${{ github.event.inputs.image_name }}:${{ github.event.inputs.image_tag }}

      # Save Docker image to a tar file
      - name: Save Docker image to a tar file
        run: |
          docker save ${{ github.event.inputs.image_name }}:${{ github.event.inputs.image_tag }} -o image.tar

      # Transfer Docker image tar file to the server
      - name: Transfer Docker image to server
        uses: appleboy/scp-action@v0.1.3
        with:
          host: ${{ secrets.DEV_SERVER_HOST }}
          username: ${{ secrets.DEV_SERVER_USER }}
          key: ${{ secrets.DEV_SERVER_SSH_KEY }}
          source: "image.tar"
          target: "/root/code/docker/images/"

      # Use SSH to load the Docker image and run container on the server
      - name: Load Docker image and run container on server
        uses: appleboy/ssh-action@v0.1.7
        with:
          host: ${{ secrets.DEV_SERVER_HOST }}
          username: ${{ secrets.DEV_SERVER_USER }}
          key: ${{ secrets.DEV_SERVER_SSH_KEY }}
          script: |
            cd /root/code/docker/images/
            docker load -i image.tar

      # Report deployment result
      - name: Notify Deployment Success
        if: success()
        run: echo "Deployment of ${{ github.event.inputs.image_name }}:${{ github.event.inputs.image_tag }} was successful!"

      - name: Notify Deployment Failure
        if: failure()
        run: echo "Deployment of ${{ github.event.inputs.image_name }}:${{ github.event.inputs.image_tag }} failed."

分为五步
Pull Docker image: 从远程仓库拉取 Docker 镜像。
Save Docker image to a tar file: 将 Docker 镜像保存为 tar 文件。
Transfer Docker image to server: 使用 scp-action 将 tar 文件传输到目标服务器。
Load Docker image and run container on server: 使用 SSH 连接到目标服务器,加载 Docker 镜像,并运行容器。
Notify Deployment Success/Failure: 根据部署结果报告成功或失败。
提交之后在action页面输入镜像名称和tag

在这里插入图片描述
这样这里输入镜像源的名称和tag,然后点运行,就会自动发布到我的服务器上了。
执行docker images可以发现,已经有了
在这里插入图片描述

在服务器里输入docker images已经可以看到镜像已经上传到服务器里面了
重新运行之前失败的action,发现已经找到镜像了,这样就OK了

在这里插入图片描述

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

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

相关文章

运行PaddleOCR报错:requests.exceptions.SSLError: HTTPSconnectionPool……

文章目录 问题描述解决方法 问题描述 在运行以下代码时报错: ocr PaddleOCR(lang"en")解决方法 打开cmd,输入以下命令,查找Python解释器所在路径。 找到 Lib\site-packages\paddleocr\ppocr\utils\network.py,将代码…

【Python小知识 - 2】:在VSCode中切换Python解释器版本

文章目录 在VSCode中切换Python解释器版本 在VSCode中切换Python解释器版本 在VSCode中按下快捷键CtrlShiftP,出现命令框。 输入以下命令: Python: Select Interpreter输入命令回车后即出现不同的Python解释器选项,选择想要切换的Python解释器…

火焰检测算法、明烟明火检测、烟火检测算法

烟火检测算法主要用于火灾早期预警系统中,能够在火灾初期阶段及时发现烟雾或火焰,从而快速响应并采取行动,以减少火灾带来的损失。以下是对烟火检测算法的应用场景及优势的详细介绍。 烟火检测算法广泛应用于多种场景中,以下是一些…

C++ inline内联函数

个人主页:Jason_from_China-CSDN博客 所属栏目:C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目:C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 用 inline 修饰的函数叫做内联函数,编译时C编译器会在调用的地方…

Netty笔记05-组件Handler Pipeline

文章目录 概述ChannelHandler方法 ChannelPipeline特点 总结 代码示例服务器端客户端 EmbeddedChannelEmbeddedChannel 的方法 概述 ChannelHandler ChannelHandler 是 Netty 中的一个接口,它定义了处理 I/O 事件的方法。ChannelHandler 可以处理各种类型的事件&a…

ESP01的AT指令连接到阿里云平台

物联网平台提供安全可靠的设备连接通信能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端。此外,也提供方便快捷的设备管理能力,支持物模型定义,数据结构化存储,和远程调试、监控、运维。总…

C++学习笔记之引用(基础)

C学习笔记之引用 https://www.runoob.com/cplusplus/cpp-references.html 引用变量是一个别名,它是已存在变量的另一个名字 一旦把引用初始化为某个变量,可以使用该引用名称或变量名称来指向变量 1、引用vs指针 引用和指针之间有一些相似,也…

计算机的错误计算(九十三)

摘要 探讨 log(y,x) 即以 x 为底 y 的对数的计算精度问题。 Log(y,x)运算是指 x 为底 y 的对数。 例1. 计算 log(123667.888, 0.999999999999999) . 不妨在Python中计算,则有: 若在 Excel 单元格中计算,则有几乎同样的输出: 然…

树莓派交叉编译

目录 一、交叉编译的认知 1.1 本地编译: 1.2 交叉编译是什么: 1.3 为什么要交叉编译: 1.4 什么是宿主机?什么是目标机? 1.5 如何进行交叉编译: 二、交叉编译工具链的安装 2.1 下载交叉编译工具&…

CesiumJS+SuperMap3D.js混用实现可视域分析 S3M图层加载 裁剪区域绘制

版本简介: cesium:1.99;Supermap3D:SuperMap iClient JavaScript 11i(2023); 官方下载文档链家:SuperMap技术资源中心|为您提供全面的在线技术服务 示例参考:support.supermap.com.cn:8090/w…

设置 AutoCAD双击 DWG 文件时启动新的程序

1 问题描述 原CAD打开多个文件时,会在该程序打开新的标签,合并显示。 有时想打开新文件时启动新的程序,单独显示,如下: 2 解决办法 2.1 方法1 SDI变量可以将CAD设置成单文档模式,设置为1的时候就能实…

音视频直播应用场景探讨之RTMP推流还是GB28181接入?

技术背景 好多开发者跟我们沟通音视频解决方案的时候,不清楚什么时候用RTMP推送模块,什么时候用GB28181设备接入模块,也不清楚二者差异化。实际上,RTMP推流和GB28181接入模块,在很多方面存在差异,如应用领…

IPC之AIDL从认识到实战

目录 前言 什么是AIDL? 为什么要设计出这样一种语言?它能帮助我们干什么? 还有其他方法能实现跨进程通信吗?相较于别的方法AIDL有什么优势呢? AIDL的相关语法 Java与AIDL的不同之处 AIDL默认支持的数据类型: …

怎么浏览URL的PDF文件呢

最近发现PDF文件网页端打开就是丑,不知道怎么办 1. 看着实在不舒服,用chorm的插件 然后原本本地用的也是2345pdf阅读器 2. 之后也下载了adobe pdf的桌面阅读器 2345打开是这个样子 这个是现在啦 如果要一些安装包什么的,评论见~ 最…

相机光学(三十八)——VCM(Voice Coil Motor)音圈马达

VCM(Voice Coil Motor)音圈马达 0.参考链接1.什么是音圈马达2.对焦(变焦)原理3.音圈马达结构4.音圈马达工作原理5.VCM 主要性能指标 0.参考链接 (1)Camera 模组之 VCM篇 (2)VCM基本…

08 vue3之认识bem架构及less sass 和scoped

bem架构 他是一种css架构 oocss 实现的一种 (面向对象css) ,BEM实际上是block、element、modifier的缩写,分别为块层、元素层、修饰符层,element UI 也使用的是这种架构 1. BEM架构 1. 介绍 1. BEM是Block Element M…

PowerBI 关于FILTERS函数和VALUES函数

本人是powerbi新手,最近在使用Filters()函数和Values()函数时,有点不太明白它们之间的区别,u有时它们得到的结果是一样的,有时却不一样。 官方文档里,Filters()是表示返回直接作为筛选器应用到 columnName 的值 FILT…

MinIO - macOS上配置、Python调用

文章目录 安装配置 MinIO 服务Python 调用SDK 简介调用示例 安装配置 MinIO 服务 1、使用 brew 安装 MinIO 如果您之前使用 brew install minio 安装了MinIO服务器,那么我们建议您改为从 minio/stable/minio 重新安装。 brew install minio/stable/minio2、创建文…

YOLOv5/v8 + 双目相机测距

yolov5/v8双目相机测距的代码,需要相机标定 可以训练自己的模型并检测测距,都是python代码 已多次实验,代码无报错。 非常适合做类似的双目课题! 相机用的是汇博视捷的双目相机,具体型号见下图。 用的yolov5是6.1版本的…

Spring Boot集成Akka remoting快速入门Demo

1.什么是Akka remoting? Akka-Remoting一种ActorSystem之间Actor对Actor点对点的沟通协议.通过Akka-Remoting来实现一个ActorSystem中的一个Actor与另一个ActorSystem中的另一个Actor之间的沟通 Akka Remoting限制: 不支持NAT(Network Add…