Docker执行小技巧(批量脚本)

一、批量下载docker镜像并批量导入导出到其它地方

起因是我需要下载一批镜像,但是我使用得Linux机器上无法下载,因为涉及外网,所以我计划在另一台外网机器上完成所有镜像的下载后,再批量导出、导入到目标机器上,开干!

1、编写一个脚本 images.sh 文件:

#!/bin/bash
images=(
  docker.io/cockpit/kubernetes:latest
  docker.io/openshift/origin-haproxy-router:v3.11
  docker.io/openshift/origin-node:v3.11
  docker.io/openshift/origin-control-plane:v3.11
  docker.io/openshift/origin-deployer:v3.11.0
  docker.io/openshift/origin-pod:v3.11.0
  docker.io/openshift/origin-web-console:v3.11
  docker.io/openshift/origin-docker-registry:v3.11
  docker.io/openshift/origin-metrics-server:v3.11
  docker.io/openshift/origin-console:v3.11
  docker.io/openshift/origin-metrics-heapster:v3.11
  docker.io/openshift/origin-metrics-hawkular-metrics:v3.11
  docker.io/openshift/origin-metrics-schema-installer:v3.11
  docker.io/openshift/origin-metrics-cassandra:v3.11
  quay.io/coreos/cluster-monitoring-operator:v0.1.1
  quay.io/coreos/prometheus-config-reloader:v0.23.2
  quay.io/coreos/prometheus-operator:v0.23.2
  docker.io/openshift/prometheus-alertmanager:v0.15.2
  docker.io/openshift/prometheus-node-exporter:v0.16.0
  docker.io/openshift/prometheus:v2.3.2
  docker.io/grafana/grafana:5.2.1
  quay.io/coreos/kube-rbac-proxy:v0.3.1
  quay.io/coreos/etcd:v3.2.22
  quay.io/coreos/kube-state-metrics:v1.3.1
  docker.io/openshift/oauth-proxy:v1.1.0
  quay.io/coreos/configmap-reload:v0.0.1
  quay.io/openshift/origin-node:v3.11
  quay.io/openshift/origin-pod:v3.11
)
for imageName in ${images[@]} ; do
  docker pull $imageName
done

2、授予执行权限:

chmod +x images.sh

3、执行脚本并打印日志,当然也可以直接执行:

nohup ./images.sh > log.file  2>&1 &

下载完成后,查看所有的镜像是否完整:

[root@VM-0-12-centos jiguiquan]# docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}"
REPOSITORY                                   TAG                 IMAGE ID
openshift/origin-node                        v3.11               983f6b1c6bd4
openshift/origin-control-plane               v3.11               7a2f8e6e6a15
openshift/origin-deployer                    v3.11.0             e6d4226c7cc0
openshift/origin-haproxy-router              v3.11               e3afcd798b00
openshift/origin-pod                         v3.11.0             560ab7ad8bbe
cockpit/kubernetes                           latest              736c0218e939
openshift/origin-docker-registry             v3.11               9dffb2abf1dd
openshift/origin-console                     v3.11               ab1db955ef9e
openshift/origin-web-console                 v3.11               be30b6cce5fa
openshift/origin-metrics-server              v3.11               8c99f32f40d3
openshift/origin-metrics-heapster            v3.11               69421c019449
openshift/origin-metrics-hawkular-metrics    v3.11               59e2258250c4
openshift/origin-metrics-schema-installer    v3.11               342f50fded7d
openshift/origin-metrics-cassandra           v3.11               8176cfabc16b
quay.io/coreos/cluster-monitoring-operator   v0.1.1              4488a207a5bc
quay.io/coreos/prometheus-config-reloader    v0.23.2             2ed5973a47af
quay.io/coreos/prometheus-operator           v0.23.2             835a7e260b35
openshift/prometheus-alertmanager            v0.15.2             68bbd0006378
openshift/prometheus-node-exporter           v0.16.0             f9f775bf6d0e
openshift/prometheus                         v2.3.2              e362c322f000
grafana/grafana                              5.2.1               1bfead9ff707
quay.io/coreos/kube-rbac-proxy               v0.3.1              992ac1a5e7c7
quay.io/coreos/etcd                          v3.2.22             ff5dd2137a4f
quay.io/coreos/kube-state-metrics            v1.3.1              a9c8f313b7aa
openshift/oauth-proxy                        v1.1.0              90c45954eb03
quay.io/coreos/configmap-reload              v0.0.1              3129a2ca29d7

4、一键导出所有镜像到 openshift.tar 包:

docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o openshift.tar

5、将tar包拷贝到目标服务器上,执行 load 导入命令:

docker load -i openshift.tar

二、将当前运行状态的docker容器状态导出为镜像,保存起来

起因是因为,我通过官方教程,快速部署了一个大平台,这个平台是由很多容器一起工作才能支撑,我需要修改前端页面的一些东西,大成本的方案肯定是下载官方源码重新进行改造编译打包镜像等操作;

但是那样太烦了,我就直接进入容器内部修改了一些东西,运行正常后,我将当前状态导出为自己的镜像保存下来,以后再部署就不用再进入修改啦。

docker commit -m "jiguiquan" -a "jiguiquan" 163950a65bfb registry.cn-hangzhou.aliyuncs.com/jgqk8s/jgq-console:v3.1.1

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐