1. 程式人生 > >docker 13 dockerfile的保留字指令

docker 13 dockerfile的保留字指令

路徑 body 總結 生成 應用軟件 變量 docker 體系 .net

Dockerfile是用來構建Docker鏡像的構建文件,是由一系列命令和參數構成的腳本。

構建三步驟:1、編寫dockerfile文件;2、docker build;3、docker run

dockerfile內容基礎知識:

1、每條保留字指令必須為大寫字母且後面要跟隨至少一個參數;

2、指令安裝從上到下,順序執行;

3、#號表示註釋;

4、 每條指令都會創建一個新的鏡像層,並對鏡像進行提交;

dockerfile執行的大致流程:

1、docker從基礎鏡像運行一個容器;

2、執行一條指令並對容器做修改;

3、執行類似docker commit的操作提交一個新的鏡像層;

4、docker再基於剛提交的鏡像運行一個新的容器;

5、執行dockerfile中的下一條指令直到所有指令都執行完成。

總結:從應用軟件的角度來看,dockerfile,docker鏡像與docker容器分別代表軟件的三個不同階段:

a) dockerfile是軟件的原材料;

b)docker鏡像是軟件的交付品

c)docker容器則可以認為是軟件的運行態。

dockerfile面向開發,docker鏡像成為交付標準,docker容器則涉及部署與運維,三者缺一不可,合力充當docker體系的基石。

所以,以後開發向運維工程師就不再交部署文件了,而是交鏡像。運維工程師拿到鏡像,生成容器運行就可以了。

dockerfile保留指令:

1、FROM

  FROM:基礎鏡像,當前的新鏡像基於哪個鏡像

2、MAINTAINER

  MAINTAINER:鏡像維護者的姓名和郵箱地址

3、RUN

  RUN:容器構建時需要的運行的命令

4、EXPOSE

  EXPOSE:當前容器對外暴露的端口號

5、WORKDIR

  WORKDIR:指定容器在創建後,終端默認登錄進來的工作目錄,一個落腳點

6、ENV

  ENV:用來在構建鏡像過程中設置環境變量

  舉例:ENV MY_PATH /usr/mytest

  ENV這個環境變量可以在後續的任何RUN指令中使用,這就如同在命令前指定了環境變量前綴一樣;也可以在其他指令中直接使用這些環境變量,比如WORKDIR $MY_PATH

7、ADD

ADD:將宿主機目錄下的文件拷貝到鏡像裏面並且ADD命令會自動處理URL和解壓tar壓縮包

8、COPY

COPY:類似ADD,拷貝文件和目錄到鏡像中,但是它只是拷貝,不會自動處理URL和解壓tar壓縮包。COPY將從構建上下文目錄中<源路徑>的文件/目錄復制到新的一層的鏡像內的<目標路徑>位置。

它的使用方法有兩種:COPY src test和COPY ["src","dest"]

9、VOLUME

VOLUME:容器數據卷,用於數據保存和持久化工作

10、CMD

CMD:指定一個容器啟動時要運行的命令。dockerfile中可以有多個CMD指令,但只有最後一個生效,CMD會被docker run之後的參數替換。

CMD指令的格式和RUN類似,也是兩種格式:

a) shell格式:CMD <命令>

b) exec格式:CMD [‘可執行文件‘,‘參數1’,‘參數2’....]

c) 參數列表格式:CMD [‘參數1‘,‘參數2’...],在指定了ENTRYPOINT指令後,用CMD指定具體的參數

11、ENTRYPOINT

ENTRYPOINT:指定一個容器啟動時要運行的命令。ENTRYPOIT的目的和CMD一樣,都是在指定容器啟動程序及參數。

區別:CMD和ENTRYPOINT都是指定一個容器啟動時要運行的命令,但是 如果dockerfile中可以有多個CMD指令,只有最後一個生效 ,CMD會被docker run之後的參數替換 ;而有多個ENTRYPOINT指令,每個指令都生效,這就是CMD和ENTRYPOINT的區別。

12、ONBUILD(觸發器)

當構建一個被繼承的Dockerfile時運行命令,父鏡像在被子繼承後,父鏡像的onbuild被觸發

來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/28916011/viewspace-2213324/,如需轉載,請註明出處,否則將追究法律責任。

docker 13 dockerfile的保留字指令