分享一个批量导入 docker 镜像和导入并运行镜像的脚本

159次阅读
没有评论

共计 997 个字符,预计需要花费 3 分钟才能阅读完成。

在生产环境下,一般不允许连接外网,那么就需要把镜像导出拷贝到生产环境下。如果一个项目的中间件比较多,并且微服务架构下的服务镜像也很多,那么这个步骤就会显得比较麻烦。

并且,服务镜像是可以导入并直接启动的,因为他们运行的命令都类似,除了镜像名称不同以外,所有阿蛮君写了如下脚本:

#!/bin/bash
shell_dir=$(pwd)
loadStartDir="load_and_start"
loadOnlyDir="load_only"
loadedDir="loaded"

if [ ! -d $loadedDir ]; then
  mkdir $loadedDir
fi

if [ -d $loadStartDir ]; then
  echo "======导入并启动镜像开始======"
  for file in $shell_dir/$loadStartDir/*.tar
  do
    if [ -f $file ]; then
      result=$(docker load < $file)
      ## 将文件移动到已导入文件夹
      mv $file $shell_dir/$loadedDir
      repo=$(echo "$result" | awk -F: '{print $2}')
      ## 容器名不能带 /
      serverName=$(echo "$repo" | sed 's/\//_/g')
      ## 删除以前的容器
      docker rm -f $serverName > /dev/null 2>&1
      echo "server $serverName is starting"
      tag=$(echo $result | awk -F: '{print $3}')
      docker run -d --net host --restart=unless-stopped -e ACTIVE=pro --name $serverName $repo:$tag > /dev/null 2>&1;
    fi
  done
  echo "======导入并启动镜像结束======"
fi

if [ -d $loadOnlyDir ]; then
  echo "======仅导入镜像开始======"
  for file in $shell_dir/$loadOnlyDir/*.tar
  do
    if [ -f $file ]; then
      echo "$(docker load < $file)"
      mv $file $shell_dir/$loadedDir
    fi
  done
  echo "======仅导入镜像结束======"
fi

这里的 docker run 命令根据实际情况进行修改。

提醒:本文发布于329天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2023-05-05发表,共计997字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 无忧云 提供安全防护和加速服务