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