dockerfile常用命令解析
FROM
基礎映象,FROM 命令必須是 Dockerfile 的首個命令
也就是繼承哪個映象
LABEL
為映象生成元資料標籤資訊
原有指令 MAINTAINER 已經放棄使用,用 LABEL maintainer="你的郵箱" 替代
USER
指定執行容器時的使用者名稱或 UID,後續 RUN 也會使用指定使用者
VOLUME
定義匿名卷,容器執行時應該儘量保持容器儲存層不發生寫操作,為了防止執行時使用者忘記將動態檔案儲存的目錄掛載為卷,可以事先指定某些目錄掛載為匿名卷。這樣就不會向容器儲存層寫入大量資料
WORKDIR
用於設定 CMD 指明的命令的執行目錄
為後續的 RUN、CMD、ENTRYPOINT、ADD 指令配置工作目錄。可以使用多個 WORKDIR 指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。使用 docker exec -it 進入容器後,預設也會進入到 WORKDIR 指定的目錄
容器啟動時的⼯作⽬錄
ENV
指定容器啟動時的環境變數(注意,只有在容器啟動時,啟動指令碼能讀取到,如果希望其他使用者登入到容器也生效的話,需要寫入 .bashrc)
設定映象內的環境變數
COPY
COPY 命令有兩個引數,源和目標。它的基本作用是從源系統的檔案系統上覆制檔案到目標容器的檔案系統
EXPOSE
指定埠轉發
CMD
設定容器建立是執行的預設命令
支援三種格式,預設會被 docker run 指定的引數覆蓋。每個容器只能執行一條 CMD 命令。執行的命令和引數當指定多個時,只有最後一個起效
- CMD [“executable”, “引數1”,“引數2”]:使用 exec 方式執行,推薦
- CMD command 引數1 引數2:shell 方式執行
- CMD [“引數1”,“引數2”]:提供給 ENTRYPOINT 做預設引數
啟動容器時執行的shell命令
ENTRYPOINT
指定容器的“入口”
支援兩種格式,預設不會被 docker run 指定的引數覆蓋。可以指定 --entrypoint 引數去覆蓋。每個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最後一個起效
- ENTRYPOINT [“executable”, “引數1”,“引數2”]:使用 exec 方式執行
- 推薦 - ENTRYPOINT command 引數1 引數2:shell 方式執行
指定容器啟動指令碼
HEALTHCHECK
Docker 1.12版本後引入的判斷容器執行狀態是否正常
ADD
將⼯作⽬錄下的某個⽬錄或者⽂件copy到映象的某個路徑下ARG
構建環境的環境變數
RUN
RUN 命令是 Dockerfile 執行命令的核心部分。它接受命令作為引數並用於建立映象。每條 RUN 命令在當前基礎映象上執行,並且會提交一個新映象 執⾏shell 命令延伸
COPY和ADD的區別