![](/img/trans.png)
[英]How to remove old docker images in continuous integration to save disk space
[英]How can I make docker to not eat up disk space if used in Continuous integration
我正在与docker一起玩,并计划在GitLab CI环境中使用它,以将当前项目状态打包到容器中,并提供运行中的实例进行审查。
我使用一个非常简单的Dockerfile,如下所示:
FROM php:7.0-apache
RUN sed -i 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/000-default.conf
COPY . /var/www/html/
现在,只要我将一个新的(空)文件( touch foobar
)移至当前目录并调用
docker build -t test2 --rm .
再次,将创建一个完整的新层,其中包含所有代码。
如果我不创建新文件,则旧图像似乎可以很好地重用。
我有一个使用以下Dockerfile
的中途解决方案:
FROM test2:latest
RUN sed -i 's!/var/www/html!/var/www/html/public!g'
/etc/apache2/sites-available/000-default.conf COPY。 在/ var / www / html等/
在研究了该问题并将存储驱动程序切换为overlay
,这似乎就是我想要的-仅添加几个字节作为新层。
但是现在我在想,如何将其集成到我的CI设置中-基本上我将需要两个不同的Dockerfile-取决于映像是否已经存在。
有更好的解决方案吗?
使用相同标签或不使用标签构建图像
docker build -t myapp:ci-build ....
要么
docker build ....
如果使用相同的标签,则旧图像将不加标签,并以“”作为名称。 如果您不标记它们,它们的名称也将为“”。
现在您可以安排以下命令
docker system prune -f
这将删除所有悬空的图像容器等
一种建议是使用命令docker image prune
清理悬空的图像。 这样可以节省大量空间。 您可以在CI中定期运行此命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.