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 簡短。如果需要進行復雜設定,請考慮使用專用指令碼或設定基本映像。