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

【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

http://www.mrgr.cn/news/17787.html

相关文章:

  • 开启ROS 2中的geometry坐标模拟展示
  • 基础闯关3
  • K8s系列之:Operator 和 Operator Framework
  • C#绘制常用工业控件(仪表盘,流动条,开关等)
  • Android图片缓存工具类LruCache原理和使用介绍
  • K8s系列之:解释Kubernetes Operators
  • 视联动力数字科技新成果闪耀2024数博会
  • Linux实验报告2-初步使用shell
  • 展锐7870 Camera HAL层日志调试
  • 钢铁百科:A633D交货状态、A633D对应牌号、A633D力学性能解析
  • 软件项目实施方案(Word原件-项目案例)
  • 007.Python爬虫系列_初识爬虫
  • pyro ExponentialLR 如何设置优化器 optimizer的学习率 pytorch 深度神经网络 bnn,
  • C++身份证实名认证-实名制-身份证三要素认证-身份认证-身份验真-接口
  • 欧科云链OKLink受邀参与WebX ,旗下EaaS助力项目方“弯道超车”
  • Qt定时器详解
  • nodejs程序如何确定哪个是主进程文件?
  • Nuxt3入门:路由系统(第4节)
  • 【GeoScenePro】Generic Server Error
  • 【Java】SpringBoot 单体项目创建 与 整合 Mybatis-Plus