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

shell脚本实现docker镜像批量保存并上传至Harbor仓库

使用场景说明:

       由于开发环境与正式环境网络隔离,通过导出业务系统docker镜像的方式,将业务系统docker镜像推送到正式环境harbor仓库。

      (1)批量导出业务系统docker镜像。

#!/bin/bash
#1.创建tar包
echo "开始创建tar包"
# 获取所有镜像的列表 开发环境Harbor 镜像地址:192.168.16.131/embm/*:tag
images=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep '192.168.16.131')
# 遍历每个镜像
varname=''
varnametemp=''
varnametemp2=''
for image in $images; do
# 创建tar包,不包括镜像历史层(仅保存当前层)
varname="${image//192.168.16.131\/''}"
echo "*********** $varname"
varnametemp="${varname//\embm\/''}"
echo "*********** $varnametemp"
varnametemp2="${varnametemp//:/'-'}"
echo "*********** $varnametemp2"
docker save -o "${varnametemp2}.tar" "$image"
echo "Created tar for $varnametemp2"
done
echo "结束创建tar包"

(2)批量打Tag并推送至正式环境Harbor仓库。

#!/bin/bash
#1.加载镜像
echo "开始执行加载镜像"
#ls /data/business_images/*.tar | xargs -I {} docker load -i {}
sleep 2

# 2.打成Harbor tag 并推送
echo "开始执行打成Harbor tag 并推送" 线上环境Harbor镜像地址195.129.2.34/embm/*:tag
images=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep '192.168.16.131/embm')
# 遍历每个镜像
for image in $images; do
# 创建tar包,不包括镜像历史层(仅保存当前层)
echo "镜像名称:$image"
tagname="${image//192.168.16.131/195.129.2.34}"
echo "Harbor tag名称:$tagname"
docker tag $image $tagname
docker push $tagname
echo "完成推送镜像$tagname"
done
echo "镜像推送处理完成"

(3)登录正式环境Harbor地址,查看docker镜像是否推送成功。

http://www.dtcms.com/a/391608.html

相关文章:

  • 用 EzCaptcha 优化 reCAPTCHA 低通过率问题
  • 在docker中构建Vue项目
  • 力扣1895. 最大的幻方
  • Linux入门(四)
  • 以下是与LoRa技术相关的数学公式整理
  • (3) rust和前端交互
  • TextFlux重磅发布:告别复杂控制信号!多语种高保真场景文本编辑新时代
  • A股大盘数据-20250919分析
  • [x-cmd] X-CMD 的依赖非常精简,即装即用,无需额外配置
  • TM52F1363 电子元器件 海速芯 8位高性能微控制器(MCU)技术解析
  • 打工人日报#20250919
  • vue3学习日记(十九):组件实例详解
  • 【开题答辩全过程】以 基于python的订餐系统为例,包含答辩的问题和答案
  • 题解:CF2143E Make Good
  • 鸿蒙:使用worker实现多线程通信
  • Spring MVC 常用注解及代码示例
  • 【DMA】DMA入门:外设数据到内存,以串口DMA接收为例,解析底层实现
  • Java 中 super 和 this关键字总结
  • 我的创作纪念日 ----- 第512天
  • 【docker】删除镜像
  • 亚马逊 MWS 关键字 API 实战:关键字搜索商品列表接口深度解析与优化方案
  • 博文干货 | Pulsar 平均负载器(AvgShedder)
  • 【硬件】嘉立创专业版layout流程(一)
  • PyQt6之分组框
  • 深度剖析 IM 单聊与群聊架构设计
  • 农业自动化:技术重塑传统农业的新范式
  • Nginx 日志文件在哪?
  • 小程序开发者转多端应用app调整视频播放功能
  • 九、Java-注解
  • Java学习笔记——AI插件、新建模块、算数运算符类型、隐式转换、强制转换、自增自减运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符