概览

资源地址:

https://github.com/chinaboy007/kube-prometheus/tree/master/manifests/add/images

镜像清单文件:images.txt

grafana/grafana:6.6.0
quay.io/coreos/k8s-prometheus-adapter-amd64:v0.5.0
quay.io/coreos/kube-rbac-proxy:v0.4.1
quay.io/coreos/kube-state-metrics:v1.9.5
quay.io/coreos/prometheus-operator:v0.37.0
quay.io/coreos/prometheus-config-reloader:v0.37.0
quay.io/prometheus/alertmanager:v0.20.0
quay.io/prometheus/node-exporter:v0.18.1
quay.io/prometheus/prometheus:v2.15.2
quay.io/prometheus/prometheus:v2.17.2
quay.io/external_storage/nfs-client-provisioner:latest
jimmidyson/configmap-reload:v0.3.0

导出镜像:image-save.sh

#!/bin/bash
# 定义日志
workdir=`pwd`
log_file=${workdir}/sync_images_$(date +"%Y-%m-%d").loglogger()
{log=$1cur_time='['$(date +"%Y-%m-%d %H:%M:%S")']'echo ${cur_time} ${log} | tee -a ${log_file}
}list="images.txt"
#images="images.tar.gz"POSITIONAL=()
while [[ $# -gt 0 ]]; dokey="$1"case $key in-i|--images)images="$2"shift # past argumentshift # past value;;-l|--image-list)list="$2"shift # past argumentshift # past value;;-h|--help)help="true"shift;;esac
doneusage () {echo "USAGE: $0 [--image-list images.txt] [--images images.tar.gz]"echo "  [-l|--images-list path] text file with list of images. 1 per line."echo "  [-l|--images path] tar.gz generated by docker save."echo "  [-h|--help] Usage message"
}if [[ $help ]]; thenusageexit 0
fi#set -e -x#mkdir -p images-$(date +"%Y-%m-%d")
#cd images-$(date +"%Y-%m-%d")for i in $(cat ${list});
dodocker pull ${i}if [ $? -ne 0 ]; thenlogger "${i} pull failed."elselogger "${i} pull successfully."fi#docker save ${i} | gzip >images-$(date +"%Y-%m-%d")/$(echo $i |sed "s#/#-#g; s#:#-#g").tgzdocker save ${i} | gzip >images-prometheus-optrator/$(echo $i |sed "s#/#-#g; s#:#-#g").tgzif [ $? -ne 0 ]; thenlogger "${i} save failed."elselogger "${i} save successfully."fi
done

导入镜像:image-load.sh

#!/bin/bash
##用法:
#image-load.sh --images-path images-2020-03-19# 定义日志
workdir=`pwd`
log_file=${workdir}/sync_images_$(date +"%Y-%m-%d").loglogger()
{log=$1cur_time='['$(date +"%Y-%m-%d %H:%M:%S")']'echo ${cur_time} ${log} | tee -a ${log_file}
}POSITIONAL=()
while [[ $# -gt 0 ]]; dokey="$1"case $key in-i|--images-path)images_path="$2"shift # past argumentshift # past value;;-l|--image-list)list="$2"shift # past argumentshift # past value;;-h|--help)help="true"shift;;esac
doneusage () {echo "USAGE: $0 [--image-list images.txt] [--images images.tar.gz]"echo "  [-l|--images-list path] text file with list of images. 1 per line."echo "  [-l|--images path] tar.gz generated by docker save."echo "  [-h|--help] Usage message"
}if [[ $help ]]; thenusageexit 0
fi#set -e -x# 镜像压缩文件列表
images=$(cat images.txt |sed "s#/#-#g; s#:#-#g")
#images_path=images-$(date +"%Y-%m-%d")
images_path=images-prometheus-optrator
cd $images_path# 导入镜像
docker_load ()
{for imgs in $(echo ${images});dogunzip -c ${imgs}.tgz | docker load >/dev/null 2>&1if [ $? -ne 0 ]; thenlogger "${imgs} load failed."elselogger "${imgs} load successfully."fidone
}
docker_load
cd ..

推送镜像:image-push.sh

#!/bin/bash## 镜像上传说明
# 需要先在镜像仓库中创建 xxx 项目
# 根据实际情况更改以下私有仓库地址##用法:
#images-push.sh --images-path /opt/xxx/deploy/xxxx-images-$(date +"%Y-%m-%d")# 定义日志
workdir=`pwd`
log_file=${workdir}/sync_images_$(date +"%Y-%m-%d").loglogger()
{log=$1cur_time='['$(date +"%Y-%m-%d %H:%M:%S")']'echo ${cur_time} ${log} | tee -a ${log_file}
}images_hub() {while true; doread -p "输入镜像仓库地址(不加http/https): " registryread -p "输入镜像仓库用户名: " registry_userread -p "输入镜像仓库用户密码: " registry_passwordecho "您设置的仓库地址为: ${registry},用户名: ${registry_user},密码: xxx"read -p "是否确认(Y/N): " confirmif [ $confirm != Y ] && [ $confirm != y ] && [ $confirm == '' ]; thenecho "输入不能为空,重新输入"elsebreakfidone
}images_hubecho "镜像仓库 $(docker login -u ${registry_user} -p ${registry_password} ${registry})"#images=$(docker images -a | grep -v TAG | awk '{print $1 ":" $2}')
images=`cat images.txt`
namespace=librarydocker_push() {for imgs in $(echo ${images}); don=$(echo ${imgs} | awk -F"/" '{print NF-1}')#如果镜像名中没有/,那么此镜像一定是library仓库的镜像;if [ ${n} -eq 0 ]; thenimg_tag=${imgs}#namespace=rancher#重命名镜像docker tag ${imgs} ${registry}/${namespace}/${img_tag}#删除原始镜像#docker rmi ${imgs}#上传镜像docker push ${registry}/${namespace}/${img_tag}#如果镜像名中有一个/,那么/左侧为项目名,右侧为镜像名和tagelif [ ${n} -eq 1 ]; thenimg_tag=$(echo ${imgs} | awk -F"/" '{print $2}')#namespace=$(echo ${imgs} | awk -F"/" '{print $1}')#重命名镜像docker tag ${imgs} ${registry}/${namespace}/${img_tag}#删除旧镜像#docker rmi ${imgs}#上传镜像docker push ${registry}/${namespace}/${img_tag}#如果镜像名中有两个/,elif [ ${n} -eq 2 ]; thenimg_tag=$(echo ${imgs} | awk -F"/" '{print $3}')#namespace=$(echo ${imgs} | awk -F"/" '{print $2}')#重命名镜像docker tag ${imgs} ${registry}/${namespace}/${img_tag}#删除旧镜像#docker rmi ${imgs}#上传镜像docker push ${registry}/${namespace}/${img_tag}else#标准镜像为四层结构,即:仓库地址/项目名/镜像名:tag,如不符合此标准,即为非有效镜像。echo "No available images"fidone
}docker_push

docker离线包相关脚本编写示例:docker镜像load/push/save脚本相关推荐

  1. 老李推荐:第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例 1...

    老李推荐:第3章3节<MonkeyRunner源码剖析>脚本编写示例: MonkeyImage API使用示例 在上一节的第一个"增加日记"的示例中,我们并没有看到日记 ...

  2. 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 1...

    老李推荐: 第3章2节<MonkeyRunner源码剖析>脚本编写示例: MonkeyDevice API使用示例 上一节我们学习了如何通过MonkeyRunner这个类的静态方法wait ...

  3. 纯Python包发布setup脚本编写示例

    纯Python包发布setup脚本编写示例 2014 年 6 月 23 日IT.PythonIT.python 如果你有多个模块需要发布,而它们又存在于多个包中,那么指定整个包比指定模块可能要容易地多 ...

  4. 纯Python模块发布setup脚本编写示例

    纯Python模块发布setup脚本编写示例 2014 年 6 月 22 日IT.PythonIT.python 如果你正准备发布几个模块,特别当它们并不是只在一个特定的包内,你可以在setup脚本中 ...

  5. 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿 ...

  6. 修改器内置脚本编写_Node.js 中实践 Redis Lua 脚本

    对别人的意见要表示尊重.千万别说:"你错了."--卡耐基 Lua 是一种轻量小巧的脚本语言,用标准 C 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提 ...

  7. 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )

    文章目录 一.交叉编译 Shell 脚本参考 二.NDK r16b 版本配置 三.libjpeg-turbo 交叉编译 Shell 脚本 四.执行 libjpeg-turbo 交叉编译 Shell 脚 ...

  8. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  9. android 代码写命令,monkey基本命令及脚本编写(示例代码)

    Monkey 是Android自带的黑盒测试工具,一般通过随机触发界面事件,来确定应用是否会发生异常,多用于android应用的稳定性.压力测试 基本命令: adb shell monkey [opt ...

最新文章

  1. 合并单元格两行_28 HTML5标签学习——table单元格的合并
  2. 1载波把32个信道按_「防疫」截至8月27日,单日确诊新增32例,张文宏带来1个坏消息...
  3. Git命令按人统计提交次数和代码量
  4. Spring MVC 中的 controller层的方法的返回值类型
  5. 例题4-5 引发的static知识点
  6. Mac OS X 下 TAR.GZ 方式安装 MySQL
  7. .NET Core3.0创建Worker Services
  8. dataguru北京线下沙龙-第二部 《Oracle 索引优化思路--案例分享 -- 刘盛》
  9. 搞懂C++为什么难学,看这篇就够了!
  10. Multi Task Learning在工业界如何更胜一筹
  11. 力扣-二叉树的前序遍历
  12. 贪心算法—区间调度 电影节(POJ 4151)
  13. AI 假冒老板骗取 173 万!
  14. 听商业领袖揭秘大数据新动态
  15. 图解自监督学习,从入门到专家必读的九篇论文
  16. 【XSY2732】Decalcomania 可持久化线段树 分治
  17. 一、图解Java中String不可变性
  18. 第 2 届河北省大学生程序设计竞赛(河北省赛)-Problem C. icebound 的账单-题解
  19. 扫描枪取消回车二维码_如何使条码扫描枪录入完不自动回车呢-百度经验
  20. 将类似html数据打印机,白激光打印机的工作原理.doc

热门文章

  1. Java基础day19
  2. 【深度学习】你有哪些深度学习(RNN、CNN)调参的经验?
  3. 【深度学习】一文弄懂CNN及图像识别(Python)
  4. 【论文解读】IPM2020 | 长短期兴趣建模的图神经网络新闻推荐系统
  5. 【数据竞赛】从0梳理1场CV缺陷检测赛事!
  6. 【Python基础】Python初学者必须吃透这69个内置函数!
  7. 【心路历程】你是这样的“夜间工程师”吗?
  8. 【机器学习基础】数学推导+纯Python实现机器学习算法2:逻辑回归
  9. 99%的人都会用错或者不会看的N折验证
  10. 而立之年,不拼体力的我们应该关注什么?