最近看了一些Docker相關(guān)的知識,對制作dockerfile的流程有一些不明白的地方。
假如要制作一個基于Ubuntu的包含Nginx、MySQL、PHP等服務的dockerfile,我現(xiàn)在的流程是:
docker run一個基本的Ubuntu鏡像
更新系統(tǒng)依賴包,如:apt-get update,在文本文檔記錄執(zhí)行的命令
安裝Nginx,在文本文檔記錄安裝Nginx執(zhí)行的步驟
....
等于說是先把流程跑一遍,記錄下所有執(zhí)行的命令,然后再把這些步驟復制到dockerfile里。
個人感覺這樣做是不對的,請問大家都是怎么做的??
閉關(guān)修行中......
很正確呀。假如你非常熟悉所有的流程,自然可以直接編寫Dockerfile。但這種事情基本不能絕對的保證,特別是Docker的基礎(chǔ)系統(tǒng)鏡像大多都非常精簡,一些軟件的依賴包都需要進行下載安裝,所以自己通過容器實踐一次搭建的過程雖然有些耗時,但相對來說反而要比空想寫Dockerfile要節(jié)約時間。
通常來說編寫Dockerfile是這樣一個流程:
通過容器預演安裝過程,記錄下搭建命令
對安裝命令進行匯總、優(yōu)化,編寫Dockerfile
嘗試使用Dockerfile構(gòu)建鏡像,檢查是否存在問題
通過構(gòu)建的鏡像建立容器,確保其中的程序能夠正確使用
通過參考docker hub上現(xiàn)成的dockerfile 再根據(jù)自己的需求修改,這樣的效率會更高一些,從頭寫dockerfile只能按照樓上的兄弟那樣操作了,我稱之為“錄像機”方式。