用linux命令压缩多个镜像

首先:需要一条命令列出所有镜像列表,列表样式如:

hub.docker.com/base_tools/rabbitmq:3.8.26
hub.docker.com/base_tools/redis:7.2-rc3
hub.docker.com/ifas/gocron:latest
hub.docker.com/ifas/ifas_engine_api:pro_20230708
hub.docker.com/ifas/neo4j:v1
hub.docker.com/vfs/ifas_html:ci_20230809_1f2843b

使用echo $(获取镜像列表的命令)输出结果状态为:【空格间隔的所有镜像】

hub.docker.com/base_tools/rabbitmq:3.8.26 hub.docker.com/base_tools/redis:7.2-rc3 hub.docker.com/ifas/gocron:latest hub.docker.com/ifas/ifas_engine_api:pro_20230708 hub.docker.com/ifas/neo4j:v1 hub.docker.com/vfs/ifas_html:ci_20230809_1f2843b

然后使用命令:

docker save $(获取镜像列表的命令) | gzip > ./yourname.tar

然后,就是怎么获取镜像列表了

1:自己搞一个列表,直接粘贴进去,适用镜像少的情况,如:

docker save image:1 image:2 image:3 | gzip > yourname.tar

2:将所有镜像放在一个文件中,这个文件可以用代码或其它方式生成,如:

image.list 文件里,有一堆镜像,每行一个镜像

然后:

docker save $(cat image.list) | gzip > yourname.tar

3:【获取镜像列表的命令】看情况有多种方式,举一个swarm服务已经启动中的例子,获取镜像的命令可以用:

docker stack services <stack_name> | awk 'NR>2{print $5}' | sort | uniq
# 打包镜像命令即:
docker save $(docker stack services <stack_name> | awk 'NR>2{print $5}' | sort | uniq) | gzip > ./ifas.tar

最后:如果发现以下报错:

Error response from daemon: invalid reference format

原因是本地缺少列表中的镜像,需要先拉去一下,命令:

for i in $(获取镜像列表的命令);do docker pull $i; done
#以swarm为例的拉取镜像完整命令:
for i in $(docker stack services <stack_name> | awk 'NR>2{print $5}' | sort | uniq);do docker pull $i; done

你可能感兴趣的:(Docker,Linux,docker,docker,save,批量,docker,save,im,批量存储镜像,批量存储多个镜像)