天天看點

Dockerfile中最常用的指令

FROM
指定 base 鏡像。
MAINTAINER
設定鏡像的作者,可以是任意字元串。
COPY
将檔案從 build context 複制到鏡像。
COPY 支援兩種形式:
COPY src dest
COPY ["src", "dest"]
注意:src 隻能指定 build context 中的檔案或目錄。
ADD
與 COPY 類似,從 build context 複制檔案到鏡像。不同的是,如果 src 是歸檔檔案(tar, zip, tgz, xz 等),檔案會被自動解壓到 dest。
ENV
設定環境變量,環境變量可被後面的指令使用。例如:
...
ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
...

EXPOSE
指定容器中的程序會監聽某個端口,Docker 可以将該端口暴露出來。我們會在容器網絡部分詳細讨論。
VOLUME
将檔案或目錄聲明為 volume。我們會在容器存儲部分詳細讨論。
WORKDIR
為後面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令設定鏡像中的目前工作目錄。
RUN
在容器中運作指定的指令。
CMD
容器啟動時運作指定的指令。
Dockerfile 中可以有多個 CMD 指令,但隻有最後一個生效。CMD 可以被 docker run 之後的參數替換。
ENTRYPOINT
設定容器啟動時運作的指令。
Dockerfile 中可以有多個 ENTRYPOINT 指令,但隻有最後一個生效。CMD 或 docker run 之後的參數會被當做參數傳遞給 ENTRYPOINT。
下面我們來看一個較為全面的 Dockerfile:           
注:Dockerfile 支援以“#”開頭的注釋。
建構鏡像:           
① 建構前確定 build context 中存在需要的檔案。
② 依次執行 Dockerfile 指令,完成建構。
運作容器,驗證鏡像内容:           
① 進入容器,目前目錄即為 WORKDIR。
如果 WORKDIR 不存在,Docker 會自動為我們建立。
② WORKDIR 中儲存了我們希望的檔案和目錄:
目錄 bunch:由 ADD 指令從 build context 複制的歸檔檔案 bunch.tar.gz,已經自動解壓。
檔案 tmpfile1:由 RUN 指令建立。
檔案 tmpfile2:由 COPY 指令從 build context 複制。
③ ENV 指令定義的環境變量已經生效。