用linux命令压缩多个镜像

15 篇文章 0 订阅

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值