繁体   English   中英

如果在持续集成中使用Docker,如何使Docker不占用磁盘空间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM