2017-08-27 82 views
1

我正在玩docker並計劃在GitLab CI環境中使用它來將當前項目狀態打包到容器並提供正在運行的實例以進行評論。我如何讓Docker在持續集成中不使用磁盤空間

我用一個很簡單的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/

挖掘到that issue並將存儲驅動程序切換爲overlay後,這似乎是我想要的 - 只有幾個字節被添加爲新層。

但現在我想知道,我如何能夠將它集成到我的CI設置 - 基本上我需要兩個不同的Dockerfiles - 取決於圖像是否已經存在或它不。

有沒有更好的解決方案呢?

回答

1

具有相同的標籤或不帶標籤

docker build -t myapp:ci-build .... 

docker build .... 

如果使用相同的標記,然後舊的圖像將未標記,將有「」作爲名稱創建您的圖像。如果你不標記他們,那麼他們也會有名字。現在

你可以安排如下命令

docker system prune -f 

這將刪除所有圖像懸掛容器等

1

一個建議是使用命令docker image prune清潔懸掛圖像。這可以爲您節省很多空間。您可以在CI中定期運行此命令。