1. 程式人生 > >14-Dockerfile常用指令

14-Dockerfile常用指令

下面列出了 Dockerfile 中最常用的指令,完整列表和說明可參看官方文件。
FROM

指定 base 映象。

MAINTAINER
設定映象的作者,可以是任意字串。

COPY
將檔案從 build context 複製到映象。
COPY 支援兩種形式:

  1. COPY src dest

  2. 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 指令定義的環境變數已經生效。