【Docker镜像转存阿里云脚本】

2024-09-03 07:04

本文主要是介绍【Docker镜像转存阿里云脚本】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

脚本

#!/bin/bash# 设置环境变量
ALIYUN_REGISTRY="镜像仓库地址"
ALIYUN_NAME_SPACE="命名空间"
ALIYUN_REGISTRY_USER="用户名"
ALIYUN_REGISTRY_PASSWORD="密码"# 文件路径
IMAGES_FILE_PATH="./images.txt"
READY_IMAGE_FILE="./ready_image.txt"
TEMP_IMAGE_FILE="./temp_images.txt"# 清理上次运行生成的临时文件
echo "清理临时文件..."
rm -f "$TEMP_IMAGE_FILE"# 重启Docker服务
echo "重启Docker服务..."
sudo service docker restart# 设置Docker Buildx
echo "设置Docker Buildx..."
docker buildx create --use# 登录阿里云Docker镜像仓库
echo "登录阿里云Docker镜像仓库..."
docker login -u "$ALIYUN_REGISTRY_USER" -p "$ALIYUN_REGISTRY_PASSWORD" "$ALIYUN_REGISTRY" || {echo "登录失败,请检查用户名和密码。"exit 1
}# 检查并创建 ready_image.txt 文件
touch "$READY_IMAGE_FILE"# 过滤需要处理的镜像,忽略注释行和空行
echo "过滤需要处理的镜像..."
grep -Fvx -f "$READY_IMAGE_FILE" "$IMAGES_FILE_PATH" | grep -Ev '^\s*$|^\s*#' > "$TEMP_IMAGE_FILE"# 检查 temp_images.txt 是否为空
if [ ! -s "$TEMP_IMAGE_FILE" ]; thenecho "没有需要处理的镜像。"exit 0
fi# 统计待处理的镜像数量
total=$(grep -c . "$TEMP_IMAGE_FILE")
current=0echo "开始处理未处理的镜像,共计 $total 个镜像..."
while IFS= read -r image_name || [ -n "$image_name" ]; docurrent=$((current + 1))echo "处理镜像 $current/$total: $image_name"# 拉取镜像echo "拉取镜像: $image_name"docker pull "$image_name"echo "镜像已拉取: $image_name"# 处理镜像信息platform=$(echo "$image_name" | awk -F'--platform[ =]' '{print $2}' | awk '{print $1}')if [[ -n "$platform" && "$platform" == *"/"* ]]; thenplatform_prefix="${platform//\//_}_"elseplatform_prefix=""fiimage=$(echo "$image_name" | awk '{print $NF}')image_name_tag=$(echo "$image" | awk -F'/' '{print $NF}' | awk -F'@' '{print $1}')image_name=$(echo "$image_name_tag" | awk -F':' '{print $1}')name_space=$(echo "$image" | awk -F'/' '{print $(NF-1)}')name_space_prefix=""if [[ -n "${duplicate_images[$image_name]}" && -n "$name_space" ]]; thenname_space_prefix="${name_space}_"fi# 构建新镜像标签new_image="$ALIYUN_REGISTRY/$ALIYUN_NAME_SPACE/${platform_prefix}${name_space_prefix}${image_name_tag}"echo "镜像重命名:$new_image"# 推送镜像echo "推送镜像: $new_image"docker tag "$image" "$new_image"docker push "$new_image"echo "镜像已推送: $new_image"# 清理镜像echo "清理镜像: $new_image"docker rmi "$new_image"echo "镜像已清理: $new_image"# 记录已处理的镜像echo "$image_name" >> "$READY_IMAGE_FILE"echo "完成镜像处理 $current/$total: $image_name"echo "----------------------------------------"done < "$TEMP_IMAGE_FILE"# 清理临时文件
rm -f "$TEMP_IMAGE_FILE"
echo "清理原始镜像"
docker image prune -a -fecho "所有镜像处理完成,共计 $total 个镜像。"

镜像列表示例

# MySQL
mysql
mysql:5.7
mysql:8

这篇关于【Docker镜像转存阿里云脚本】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132356

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启