docker 13 dockerfile的保留字指令
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的保留字指令