Dockerfile 經常使用指令 - 天天5分鐘玩轉 Docker 容器技術(16)

是時候系統學習 Dockerfile 了。

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

FROM
指定 base 鏡像。網絡

MAINTAINER
設置鏡像的做者,能夠是任意字符串。學習

COPY
將文件從 build context 複製到鏡像。
COPY 支持兩種形式:ui

  1. COPY src dest進程

  2. COPY ["src", "dest"]ip

注意:src 只能指定 build context 中的文件或目錄。文檔

ADD
與 COPY 相似,從 build context 複製文件到鏡像。不一樣的是,若是 src 是歸檔文件(tar, zip, tgz, xz 等),文件會被自動解壓到 dest。字符串

ENV
設置環境變量,環境變量可被後面的指令使用。例如:get

...容器

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:

81.png

注:Dockerfile 支持以「#」開頭的註釋。

構建鏡像:

① 構建前確保 build context 中存在須要的文件。

② 依次執行 Dockerfile 指令,完成構建。

運行容器,驗證鏡像內容:

① 進入容器,當前目錄即爲 WORKDIR。
若是 WORKDIR 不存在,Docker 會自動爲咱們建立。

② WORKDIR 中保存了咱們但願的文件和目錄:
目錄 bunch:由 ADD 指令從 build context 複製的歸檔文件 bunch.tar.gz,已經自動解壓。
文件 tmpfile1:由 RUN 指令建立。
文件 tmpfile2:由 COPY 指令從 build context 複製。

③ ENV 指令定義的環境變量已經生效。

在上面這些指令中,RUN、CMD、ENTRYPOINT 很重要且容易混淆,下節專門討論。

二維碼+指紋.png

相關文章
相關標籤/搜索