Dockerfiles 最好的實踐
集團共同運營
Docker 將影象構建為圖層集合。每個圖層只能新增資料,即使此資料表明檔案已被刪除。每條指令都會建立一個新圖層。例如:
RUN apt-get -qq update
RUN apt-get -qq install some-package
有幾個缺點:
- 它將建立兩個圖層,從而生成更大的影象。
- 在
RUN
語句中單獨使用apt-get update
會導致快取問題,隨後apt-get install
指令可能會失敗。假設你稍後通過新增額外的包修改apt-get install
,然後 docker 將初始和修改的指令解釋為相同並重新使用先前步驟中的快取。因此,不執行apt-get update
命令,因為在構建期間使用了其快取版本。
相反,使用:
RUN apt-get -qq update && \
apt-get -qq install some-package
因為這隻產生一層。
提到維護者
這通常是 Dockerfile 的第二行。它告訴誰誰負責,並將能夠提供幫助。
LABEL maintainer John Doe <john.doe@example.com>
如果你跳過它,它不會破壞你的形象。但它也無助於你的使用者。
要簡明扼要
保持 Dockerfile 簡短。如果需要進行復雜設定,請考慮使用專用指令碼或設定基本映像。