专业编程基础技术教程

网站首页 > 基础教程 正文

本地导出和导入docker镜像image的shell脚本

ccvgpt 2024-07-30 20:56:25 基础教程 14 ℃

请仔细阅读脚本提示

#!/bin/bash
echo -e "\e[1;31m|-----------------------------------------------------|\e[0m"
echo -e "\e[1;31m|*****操作之前请确认本脚本与docker-compose.yml文件同目录****|\e[0m"
echo -e "\e[1;31m|********并且确认已经更新了最新的docker-compose文件********|\e[0m"
echo -e "\e[1;31m|**********如已更新请继续,如未更新请先更新再继续!!*********|\e[0m"
echo -e "\e[1;31m|-----------------------------------------------------|\e[0m"
echo ""
echo "请选择操作:"
echo "1. 导出镜像"
echo "2. 导入镜像"
read choice

if [ $choice -eq 1 ]; then
  echo "请输入导出文件名:"
  read filename

  images=($(docker-compose config | awk '/image:/ {print $2}'))

  if [ ${#images[@]} -eq 0 ]; then
    echo "没有找到任何镜像!"
    exit 1
  fi

  for image in "${images[@]}"
  do
    echo "正在备份镜像:$image"
    docker pull "$image"
  done

  echo "正在导出镜像到文件:$filename-$(date +"%Y-%m-%d_%H-%M-%S").tar"
  docker save "${images[@]}" -o "$filename"-$(date +"%Y-%m-%d_%H-%M-%S").tar

  echo "导出完成!"

elif [ $choice -eq 2 ]; then
  files=($(ls *.tar))

  if [ ${#files[@]} -eq 0 ]; then
    echo "当前目录中没有找到任何tar文件!"
    exit 1
  fi

  echo "请选择要导入的文件:"
  select file in "${files[@]}"; do
    if [ -n "$file" ]; then
      echo "正在导入镜像..."
      docker load -i "$file"
      echo "导入完成!"
      break
    else
      echo "无效的选择!"
    fi
  done

else
  echo "无效的选择!"
fi

本地导出和导入docker镜像image的shell脚本

Tags:

最近发表
标签列表