Dockerfile檔案詳解
Dockerfile是一個包含用于組合映像的指令的文本文檔。可以使用在指令行中調用任何指令。 Docker通過讀取<code>Dockerfile</code>中的指令自動生成映像。
<code>docker build</code>指令用于從Dockerfile建構映像。可以在<code>docker build</code>指令中使用<code>-f</code>标志指向檔案系統中任何位置的Dockerfile。
例:
Dockerfile 一般分為四部分:基礎鏡像資訊、維護者資訊、鏡像操作指令和容器啟動時執行指令,’#’ 為 Dockerfile 中的注釋。
Docker以從上到下的順序運作Dockerfile的指令。為了指定基本映像,第一條指令必須是FROM。一個聲明以<code>#</code>字元開頭則被視為注釋。可以在Docker檔案中使用<code>RUN</code>,<code>CMD</code>,<code>FROM</code>,<code>EXPOSE</code>,<code>ENV</code>等指令。
在這裡列出了一些常用的指令。
FROM:指定基礎鏡像,必須為第一個指令


MAINTAINER: 維護者資訊
RUN:建構鏡像時執行的指令


ADD:将本地檔案添加到容器中,tar類型檔案會自動解壓,可以通路網絡資源,類似wget


COPY:功能類似ADD,但是是不會自動解壓檔案,也不能通路網絡資源
CMD:建構容器後調用,也就是在容器啟動時才進行調用。


ENTRYPOINT:配置容器,使其可執行化。配合CMD可省去"application",隻使用參數。


LABEL:用于為鏡像添加中繼資料
ENV:設定環境變量


EXPOSE:指定于外界互動的端口


VOLUME:用于指定持久化目錄


WORKDIR:工作目錄,類似于cd指令


USER:指定運作容器時的使用者名或 UID,後續的 RUN 也會使用指定使用者。使用USER指定使用者時,可以使用使用者名、UID或GID,或是兩者的組合。當服務不需要管理者權限時,可以通過該指令指定運作使用者。并且可以在之前建立所需要的使用者

格式:
USER user
USER user:group
USER uid
USER uid:gid
USER user:gid
USER uid:group
示例:
USER www
注:
使用USER指定使用者後,Dockerfile中其後的指令RUN、CMD、ENTRYPOINT都将使用該使用者。鏡像建構完成後,通過<code>docker run</code>運作容器時,可以通過-u參數來覆寫所指定的使用者。

ARG:用于指定傳遞給建構運作時的變量
ONBUILD:用于設定鏡像觸發器


以下是一個小例子:


最後用一張圖解釋常用指令的意義^-^























