我试图建立一个小脚本,删除所有的docker图像,除了一个小的“缓存”的N个最后的图像(回滚到最后的工作版本之一)。有没有一个惯用的方法来做这件事?
laik7k3q1#
您可以使用tail命令来完成此操作。假设你只想保留最近的5张图片,你可以让tail从第n行开始显示列表,对于5张图片,你希望tail从第6行开始:
tail
tail -n +6
将其与docker配合使用可以显示图像ID列表,默认情况下,这些ID按最近的排序。
docker images -q | tail -n +6
您可以将所有这些都传递给remove images命令,这里假设您使用的是bash shell;如果使用csh派生shell,则可能需要不同的语法。
docker rmi $(docker images -q | tail -n +6)
ct2axkht2#
与接受的答案类似,但没有-n,使用head:
-n
head
docker rmi $(docker images -aq | head -N)
例如,如果N==6:
docker rmi $(docker images -aq | head -6)
2条答案
按热度按时间laik7k3q1#
您可以使用
tail
命令来完成此操作。假设你只想保留最近的5张图片,你可以让
tail
从第n行开始显示列表,对于5张图片,你希望tail从第6行开始:将其与docker配合使用可以显示图像ID列表,默认情况下,这些ID按最近的排序。
您可以将所有这些都传递给remove images命令,这里假设您使用的是bash shell;如果使用csh派生shell,则可能需要不同的语法。
ct2axkht2#
与接受的答案类似,但没有
-n
,使用head
:例如,如果N==6: