每组打印前N行->删除所有docker映像,但每个映像名称中最新的N个除外

问题描述 投票:0回答:1

用例:通过删除旧的Docker映像清理磁盘空间

以该图像为例。

REPOSITORY          TAG                                        IMAGE ID            CREATED             SIZE
gateway             2f280f169e9b018c3ee155e47e176c3418349b90   846b7ba3595c        9 hours ago         597MB
gateway             latest                                     846b7ba3595c        9 hours ago         597MB
gateway             2f280f169e9b018c3ee155e47e176c3418349b90   e47e176c3418        9 hours ago         597MB
order               2f280f169e9b018c3ee155e47e176c3418349b90   0e01f7594e4a        9 hours ago         591MB
order               latest                                     0e01f7594e4a        9 hours ago         591MB
order               2f280f169e9b018c3ee155e47e176c3418349b90   7e176c34183a        9 hours ago         591MB
payment             2f280f169e9b018c3ee155e47e176c3418349b90   e2053260d33e        9 hours ago         590MB
payment             latest                                     e2053260d33e        9 hours ago         590MB
payment             2f280f169e9b018c3ee155e47e176c3418349b90   169e9b018c3e        9 hours ago         590MB
price-offer         2f280f169e9b018c3ee155e47e176c3418349b90   5a4726a65fbd        9 hours ago         589MB

我想删除所有图像,但始终为每个名称/存储库保留最新的N张图像。

因此,我这里有3个网关,3个订单,3个付款和1个要价图像。如果我以N = 2运行脚本,则应删除最旧的网关,订单,付款图像,而不要删除单个报价图像。如果我以N = 1运行脚本,它将仅保留每个存储库/名称的最新图像。

目前我有这个:

docker images | tail -n+2 | awk '{ print $1,$3 }' | sort -r

这给了我:

gateway  e47e176c3418
gateway 846b7ba3595c
gateway 846b7ba3595c
order 7e176c34183a 
order 0e01f7594e4a
order 0e01f7594e4a
payment 169e9b018c3e
payment e2053260d33e
payment e2053260d33e
price-offer 5a4726a65fbd

但是我在为每张图像只打印前N行的部分(($ 1是相同的)。)

用例:通过删除旧的docker映像清理磁盘空间,以该映像为例。存储库标签图像ID已创建...

bash shell docker
1个回答
0
投票

因为有了列表,您可以使用beforefilter删除旧的列表:

© www.soinside.com 2019 - 2024. All rights reserved.