Skip to main content
Dockerfile 指令 每個指令的用意與 copy-exact 範例。以 Docker 官方 Dockerfile 參考為準(截至 2026-06)。

指令一覽

RUN 的 shell form 與 exec form

合併多條 RUN 成一條(用 &&\)可減少層數,並把 apt 快取在同一層清掉。

三組常混的差異

  • CMD 是「預設指令」,docker run myimg 其他指令整個覆蓋 CMD。
  • ENTRYPOINT 是「固定進入點」,docker run 後接的參數會附加在 ENTRYPOINT 之後,不覆蓋它。
  • 常見組合:ENTRYPOINT 放固定執行檔、CMD 放可被覆蓋的預設參數。
  • 兩者都用 exec form(JSON 陣列),PID 1 才是應用程式本身,才能正確收到 SIGTERM 做優雅關閉;shell form 會包一層 /bin/sh -c,signal 傳不進去。
完整互動:

其他常用指令範例

EXPOSE 只是宣告,不會真的開埠;USER 不存在的使用者要先 RUN useradd 建立。

接下來

官方參考:docs.docker.com/reference/dockerfile