在实际的运维工作中,总是免不了一些批量操作的事情,比如,批量添加用户,批量修改用户密码,批量创建文件夹,批量移动复制文件等等操作。如果都是手工操作的话,无疑是一个劳心费力的事情,因此,我们才需要编写脚本来快速处理这些重复的工作。

那么,docker也镜像其实也是可以导出为文件,然后在导入到另一个docker环境内的,说人话就是迁移工作,如何快速的导出docker镜像呢?当然还是脚本最为方便了,例如下面这个脚本将会把本机内的所有镜像统统打包到/data/docker/image_tar这个目录下。

一,

docker镜像的批量导出

#!/bin/bash
# 获取到 "image:tag" 格式的镜像名
IMG_NAME=`docker images | grep -v TAG | awk '{print $1":"$2}'`# 定义镜像存放目录
DIR="/data/docker/image_tar"
if [ ! -d "$DIR" ]; thenecho -e "\033[34m${DIR}\033[0m 不存在"mkdir -p "$DIR"echo -e "\033[34m${DIR}\033[0m 已创建"
elseecho -e "\033[34m${DIR}\033[0m 已存在"
fi
echo ""
for IMAGE in $IMG_NAME
doecho -e "正在保存 \033[33m${IMAGE}\033[0m"SAVE_NAME=`echo $IMAGE | awk -F: '{print $1"_"$2}' | sed 's/\//_/g'`docker save $IMAGE -o ${DIR}/${SAVE_NAME}.tarecho -e "已保存到 \033[34m${DIR}/\033[31m${SAVE_NAME}.tar\033[0m"echo ""
done

其实导出dockers镜像为文件有两个难点,

第一是docker save 命令是需要docker镜像名称:版本号这样的形式 ,因此将所有的镜像名称:版本号通过命令docker images | grep -v TAG | awk '{print $1":"$2}'做了一个拼接。

第二是,导出的文件名称如何定义的简洁明了,因此,通过命令定义保存的名字是镜像名称+版本号,而镜像名称内通常又带有仓库名称/ 这样的形式,而这样命名的文件会在后面的使用中出问题,因此, sed 's/\//_/g',将文件名称做了优化。

第三,

最后的 echo "" 是为了输出的美观,保证行行清晰,美观,别的意思没有。

二,

docker镜像文件的批量导入

docker镜像文件的导入就非常简单了,也不需要专门编写脚本了,通常是一句话的for循环就可以啦,比如上面定义的文件存放路径/data/docker/image_tar 里面已经有所需的镜像文件了,那么,在任何地方执行以下命令就可以啦:

for i in `ls /data/docker/image_tar/*`;do docker load <$i;done

当然,for循环的变量也可以这样写:

for i in ${ls /data/docker/image_tar/*};do docker load <$i;done

等等写法,据我所知就 四 五种方法,不过还是第一个最简单啦(打的字比较少嘛,就简单了),好了,就不扯淡了,docker镜像的导入导出就介绍到这啦。

Linux通用脚本---docker批量导入导出镜像相关推荐

  1. 本地使用shell脚本批量导入导出镜像文件

    背景 对于一些不通外网的环境进行部署的时候,需要进行离线部署项目,所以需要导出镜像后本地导出.一下做个脚本把需要导出的java项目批量处理. 导出本地镜像 shell脚本如下: #/bin/bash ...

  2. win10批量导入导出windows计划任务的批处理脚本

    批量导入导出windows计划任务的批处理脚本 2017年11月16日 16:19:31 yyusea 阅读数:2705 先把参考摆上: 参考1:  How to: Use schtasks_tool ...

  3. canpro脚本_AE/PR脚本-文件自动导入导出 Aescripts Pro IO v2.15.8

    AE/PR脚本-文件自动导入导出 Aescripts Pro IO v2.15.8 自动化导入和导出:.适用于After Effects和Premiere Pro的Pro IO是一种一站式解决方案,可 ...

  4. android手机导出联系人,OPPO Reno如何批量导入/导出联系人?

    准备换新手机,怎么将联系人号码全部存到新机里呢?现在的手机都有导入/导出联系人的功能,很方便哦! OPPO Reno如何批量导入/导出联系人? 1.依次进入手机[设置]-[系统应用]-[电话本]-[导 ...

  5. canpro脚本_AE/PR脚本-创建编辑导入导出专业字幕脚本 Subtitle Pro 2.8.0 + 使用教程...

    Subtitle Pro是一个专业的插件,可让您直接在After Effects和Premiere Pro中为视频创建字幕.可将字幕快速的导入或导出.您可以导入.srt文件或任何字幕格式,也可以编写文 ...

  6. 使用cardme读写VCard文件,实现批量导入导出电话簿

    转载自 使用cardme读写VCard文件,实现批量导入导出电话簿 首先下载jar包cardme. http://sourceforge.net/projects/cardme/?source=nav ...

  7. linux读取dmp备份数据打开,Linux 中 Oracle dmp 文件导入导出(转)

    远程工具连接到 Linux 进行操作,进行 Linux 上 dmp 文件的导入导出. 1.将用户 system 用户表导出到指定路径 D 盘 exp system/password@SID file= ...

  8. AD域中如何批量导入导出账号

    本帖出现于51CTO论坛中,是一位网友自己的实际工作经历.是在AD域中如何批量导入导出账号.工作上有一个需求,需要批量的导入一些账号,并要求有一些属性,比如:部门,职位,分机等! 如果您有兴趣也可以去 ...

  9. Java实现文件批量导入导出实例(兼容xls,xlsx)

    <link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> &l ...

最新文章

  1. Oracle HowTo:如何使用Oracle case函数
  2. 窄行打印纸打印机规格_电脑打印纸的尺寸和打印机纸张规格的设置
  3. iphone屏幕录制_无需第三方APP,苹果iPhone手机屏幕录制的方法
  4. Python爬虫之旅_(数据解析)_Xpath
  5. hybris backoffice搜索时遇到could not execute full-text query的解决方案
  6. C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
  7. 个性化联邦学习PFedMe详细解读(NeurIPS 2020)
  8. 填报true\false和复选框应用及导出打印显示复
  9. 重返opencv——视频编码和格式
  10. Phodal 的 2018 节点:Think Big Be Long
  11. VS2019无法启动程序 系统找不到指定文件解决办法
  12. MySQL学习---作业(1)
  13. 悦听player音乐播放器
  14. 2022情人节送男朋友什么礼物好,情人节送礼推荐
  15. 挖财基于大数据的信贷审批系统实践
  16. 压缩感知——沃尔什-哈达玛(WHT)变换与逆变换的Matlab代码实现
  17. Real-time Segmentation and Facial Skin Tones Grading-实时分割和面部皮肤骨骼分级
  18. C语言小练习——约瑟夫环问题
  19. AcWing 861 二分图的最大匹配
  20. JAVA中判断是否为闰年的条件是什么_Java判断是否为闰年

热门文章

  1. CSS3动画及3D初识
  2. 星梦缘陈彦妃_《星梦缘》里的“林思彤”陈彦妃都当妈了!竟然被宝宝这件事难倒了........
  3. 合并视频的方法有哪些?
  4. 计算机关于组建网络的工作,局域网组建方法_怎么建立局域网_局域网基础知识...
  5. ip-guard安全通讯设置功能支持域名
  6. 抖音获取主播间内粉丝团用户信息
  7. html从入门到精通前锋,如何踢好业余足球,从入门到精通
  8. HTML背景图的使用(超详细)
  9. Power BI Desktop 简体中文下载安装步骤
  10. js解析复杂json对象