最近看了一些Docker相關(guān)的知識,對製作dockerfile的流程有一些不明白的地方。
假如要製作一個基於Ubuntu的包含Nginx、MySQL、PHP等服務(wù)的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ù)演安裝過程,記錄下搭建指令
對安裝指令進行匯總、最佳化,編寫Dockerfile
嘗試使用Dockerfile建立映像,檢查是否有問題
透過建構(gòu)的鏡像建立容器,確保其中的程式能夠正確使用
透過參考docker hub上現(xiàn)成的dockerfile 再根據(jù)自己的需求修改,這樣的效率會更高一些,從頭寫dockerfile只能按照樓上的兄弟那樣操作了,我稱之為「錄影機」方式。