我有一个 CI 管道,它为我的应用程序为管道的每次运行构建一个 docker 映像(管道由代码推送到 git 存储库触发。)
docker 镜像由几个中间层组成,这些层的大小逐渐变得非常大。每次运行的大多数中间图像都是相同的,因此显着利用了 docker 的缓存机制。
然而,问题在于每次运行的最后几层都不同,因为它们是由 dockerfile 中的 COPY 语句产生的,其中构建的应用程序工件被复制到映像中。由于每次运行都会修改工件,因此已经缓存的最底层图像将始终无效。这些图像每个的大小为 800mb。
我可以使用什么 docker 命令来识别(和删除)这些被更新的图像替换的图像,即当它们失效时?
我想让我的 CI 管道在运行结束时将它们删除,这样它们就不会在 CI 服务器上晃来晃去并浪费大量磁盘空间。