IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux通用脚本---docker快速导入导出镜像 -> 正文阅读

[系统运维]Linux通用脚本---docker快速导入导出镜像


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

那么,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" ]; then
? echo -e "\033[34m${DIR}\033[0m 不存在"
? mkdir -p "$DIR"
? echo -e "\033[34m${DIR}\033[0m 已创建"
else
? echo -e "\033[34m${DIR}\033[0m 已存在"
fi
echo ""
for IMAGE in $IMG_NAME
do
? echo -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}.tar
? echo -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镜像的导入导出就介绍到这啦。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:26:09  更:2022-06-25 18:27:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 0:09:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码