每次docker build都挺耗時的,有辦法可以提升鏡像構建速度嗎? 我們在開發測試環境希望能更快地看到效果,而不是waiting for docker
building.


可以通過CDN加速,也可以通過Dockerfile優化,可以發郵件到[email protected]交流溝通。
如果是單位內部多個主機使用,可以部署一個registry mirror,避免每次重複從遠程拉取鏡像,可以大幅度提高build效率。如果只是個人使用,建議配置國內的mirror。另外,也要注意dockerfile的順序,經常變化的盡量放後面執行,能夠充分利用build cache。使用RUN時把多個命令雜糅在一起能夠減少layer,不過也可能會由於某一個命令拖垮整個指令,因此建議把那些經常不穩定的命令拆成多個指令吧!另外,base image盡量精簡的,比如alpine!


打包好,在 Dockerfile寫上, ADD . .
基礎鏡像儘可能小,我們現在已經全部轉為Alpine,然後盡量拆分,dockerfile優化也很重要,docker cache,dockerfile onbuild是個好東西,另外不建議將程序包放在外邊,docker本身是個集裝箱,還是統一原子的比較好。
把程序包的安裝放在Dockerfile前面,常變化的部分放在後面比如代碼;使用國內的源,比如阿里的apt-get源

其實主要的還是在於拆分鏡像吧。

一般開發、測試中經常變動的是代碼部分。

那麼對於代碼依賴的環境這種變化不多的部分可以先做個基礎鏡像。

之後,再針對項目代碼做每個commit的鏡像。希雲(http://www.csphere.cn)是搞這方面的,大家可以去看看!

優化Dockerfile,用好緩存和基礎鏡像,,經常變更的層放後面

執行docker build 命令時,鏡像構建的操作在Docker後台守護進程(daemon)中執行,而不是CLI中。因此當前目錄下的全部內容會(遞歸)發送到Docker守護進程。如果當前當前目錄下有不需要的大文件會影響構建速度。在一個空目錄構建鏡像或者在當前目錄添加一個 .dockerignore 文件排除上下文目錄下,不需要的文件和目錄。


推薦閱讀:
相关文章