一、批量下载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