把應用部署在容器中,改變了用文本文件保存配置信息的方式。而經過傳環境變量配置。linux
Dockerfile是一個文本文件,包括容器的指令。按順序從上到下執行,第一行非註釋指令必須是FROM指定基礎鏡像。docker
Dockerfile的工做邏輯:shell
(1)在一個專用目錄放入Dockerfile文件,首字母大寫。
(2)Dockerfile引用的文件都在工做目錄下,.dockeringore文件中標明的文件在打包時會被排除。
(3)docker build命令把Dockerfile引用的工做目錄傳入Docker daemon,而後開始按照Dockerfile中的內容構造鏡像。
(4)Dockerfile中的每一條指令都會生出一個新的鏡像層,最終的鏡像就是基礎鏡像上疊加一層層的鏡像層組建的。json
指令:數組
(1)FROM
Dockerfile第一個非註釋行,用於指定基準鏡像。
格式:
FROM <reposotiry>[:<tag>]
FROM <reposotiry>@<digest>
能夠用標籤或Hash碼標識鏡像tcp
(2) LABEL
用鍵值格式表示各類元數據
格式:
LABEL <key> = <value> <key> = <value> ...
例:LABEL autor="ss" time="20190312"ui
(3) COPY
用於從主機複製文件至建立的新映像文件
格式:
COPY <src> <dest>
<src>:要複製的源文件或目錄,支持通配符。
<dest>:目標路徑,建議使用絕對路徑。
說明:
a.<src>爲目錄時,則會遞歸複製,但<src>目錄自己不會被複制;
b.指定多個<src>,或在<src>中使用通配符,則<dest>必須是目錄,以/結尾;
c.<dest>事先不存在,將被自動建立。遞歸
(4) ADD
ADD指令相似於COPY指令。ADD支持使用TAR文件和URL路徑。
格式:
ADD <src> <dest>
說明:
a.同COPY指令
b.若是<src>是一個本地系統上的tar文件,它將被展開爲一個目錄,相似於tar -x。而經過URL獲取到的tar文件不會展開。
c.若是<src>是多個或使用了通配符,則<dest>必須是/結尾的目錄路徑,不然<src>的內容將被直接寫到<dest>部署
(5) WORKDIR
用於爲Dockerfile中各類指令設定工做目錄
例如:
WORKDIR /usr/local
ADD tmp.tar.gz ./src/cmd
(6) VOLUME
用於在image中建立一個掛載點目錄,以掛載Docker host上的卷或其餘容器上的卷。
格式:
VOLUME <mountpoint>
(7) EXPOSE
用於爲容器打開指定要監聽的端口
例如:EXPOSE 11211/udp 11211/tcp
配合docker run -P命令使用
(8) ENV
用於爲鏡像定義所需的環境變量,並可被Dockerfile文件中位於其後的其餘指令所調用。
調用格式:$var 或 ${var}
定義格式:
ENV <key> <value>
ENV <key>=<value> ...
(9) RUN
針對於FROM的基礎鏡像,在docker build階段執行。
格式:
RUN <command>
RUN ["<executable>", "<param1>", "<param2>"]
注意:
第一種方式,命令經過/bin/sh -c運行;
第二種格式,命令直接運行,不調用shell,該格式被docker當成json數組解析,因此必須用雙引號。
(10) CMD
CMD在docker run啓動容器時運行。
多個CMD,只執行最後一個。
格式:
CMD <command>
CMD ["<executable>", "<param1>", "<param2>"]
CMD ["<param1>", "<param2>"]
(11) ENTRYPOINT
與CMD相似,但在docker run時參數不會覆蓋ENTRYPOINT,而是做爲ENTRYPOINT的參數。
CMD與ENTRYPOINT同時存在,CMD做爲ENTRYPOINT的參數。
(12) USER
USER <UID>|<UserName>
<UID>必須爲/etc/passwd中有效的UID
(13) HEALTHCHECK
健康檢查
(14) SHELL
指定shell
默認
linux:["/bin/sh", "-c"]
win:["cmd", "/s", "/c"]
(15) STOPSIGNAL
更改stop的信號,默認是15
(16) ARG
在docker build時傳參數。
(17) ONBUILD用於在Dockerfile中定義一個觸發器,在別人用該鏡像做爲基礎鏡像是使用。