Docker基礎(chǔ):Dockerfile相關(guān)知識介紹
?今天給大家整理一下Dockerfile相關(guān)的知識,希望對大家能有所幫助!
1、Dockfile介紹
Dockfile是一種可以被Docker解釋的腳本文件,Dockerfile其實(shí)由若干條的指令組成,每條指令對應(yīng)Linux下面的一條腳本命令。Docker應(yīng)用程序可以將這些指令轉(zhuǎn)化為Linux實(shí)際執(zhí)行的命令。Docker讀取Dockerfile文件的指令然后生成對應(yīng)的docker鏡像。通過dockerfile文件可以比較明確的描述出Docker鏡像是如何一步一步構(gòu)建的。有了Dockerfile,我們可以根據(jù)實(shí)際的因業(yè)務(wù)需要構(gòu)建自己的鏡像并可以添加一些需要執(zhí)行的命令,這樣可以避免后續(xù)的部署工作省去了需要重復(fù)敲命令的繁瑣過程,大大節(jié)約了項(xiàng)目部署的時間成本
2、Dockerfile命令書寫規(guī)則
Dockerfile的指令忽略大小寫,不過建議使用大寫,可以使用#作為指令的注釋,每一行只能表示一條指令,每條指令可以攜帶多個參數(shù)。
3、Dockerfile的指令的分類
根據(jù)作用可以分為兩種,構(gòu)建指令和設(shè)置指令。?
構(gòu)建指令:用于構(gòu)建Docker鏡像,其指定的操作不會在運(yùn)行image的容器上執(zhí)行,屬于鏡像的構(gòu)建過程。。
設(shè)置指令:用于設(shè)置Docker鏡像的屬性,其指定的操作會在運(yùn)行鏡像的容器中執(zhí)行。
4、Dockerfile指令組成
4.1 From(指定基礎(chǔ)鏡像)
Dockerfile必須指定FROM ,并且是第一行,屬于構(gòu)建命令。
表示基于那個基礎(chǔ)鏡像來構(gòu)建
基礎(chǔ)鏡像可以是本地鏡像也可以是遠(yuǎn)程倉庫的鏡像
語法: FROM image name
4.2 MAINTAINER(指定鏡像作者信息)
用來指定構(gòu)建鏡像的作者信息,方便后續(xù)通過docker inspect命令查看,對鏡像沒有實(shí)際的影響。
語法: MAINTAINER author name
4.3 RUN (指定需要執(zhí)行的shell命令)
該命令會在新創(chuàng)建的鏡像上添加新的層面。docker build 時運(yùn)行。
格式:RUN command命令
4.4 CMD(設(shè)置容器啟動時執(zhí)行的操作)
可以是執(zhí)行自定義腳本,也可以是執(zhí)行系統(tǒng)命令,該指令只能在文件中存在一次,如果有多個,則只會執(zhí)行最后一條。docker run時運(yùn)行。
格式: CMD ["executable","param1","param2"] 或 CMD ["param1","param2"]
4.5 ENTRYPOINT(設(shè)置容器啟動時執(zhí)行的操作)
設(shè)置指令,指定容器啟動時執(zhí)行的命令,可以追加命令,但是只有最后一個ENTRYPOINT有效。
格式: ENTRYPOINT ["executable", "param1","param2"]
4.6 USER(設(shè)置容器執(zhí)行shell命令的用戶)
設(shè)置指令,設(shè)置啟動該容器的用戶,默認(rèn)是root用戶。
格式:USER root
4.7 EXPOSE(宿主和容器端口映射設(shè)置)
指定容器需要映射到宿主機(jī)器的端口。
格式: EXPOSE port
4.8 ENV(設(shè)置環(huán)境變量)
ENV指令可以用于為docker容器設(shè)置環(huán)境變量。
示例:ENV JAVA/HOME /usr/local/jdk1.8.0.25 指定java環(huán)境變量
4.9 ADD(文件復(fù)制命令)
復(fù)制文件命令,支持自動下載和解壓
格式:ADD 源路徑 目標(biāo)路徑
優(yōu)點(diǎn):在執(zhí)行 <源文件> 為 tar 壓縮文件的話,壓縮格式為 gzip, bzip2 以及 xz 的情況下,會自動復(fù)制并解壓到 <目標(biāo)路徑>。
缺點(diǎn):在不解壓的前提下,無法復(fù)制 tar 壓縮文件。會令鏡像構(gòu)建緩存失效,從而可能會令鏡像構(gòu)建變得比較緩慢。具體是否使用,可以根據(jù)是否需要自動解壓來決定。
說明:參數(shù):destination 是容器內(nèi)的路徑。source 可以是 下載文件的URL 或者宿主主機(jī)的目錄
4.10 COPY
類似ADD命令,將地文件拷貝到鏡像中
本地目錄為源目錄時,官方推薦使用COPY。
4.11 VOLUME (指定掛載點(diǎn))
創(chuàng)建一個可以從本地主機(jī)或其他容器掛載的掛載點(diǎn),用來存放數(shù)據(jù)庫和需要保持的數(shù)據(jù)等
4.12 WORKDIR(設(shè)置工作目錄)
指定RUN、CMD與ENTRYPOINT 命令的工作目錄。
格式: WORKDIR /path/to/workdir
5、完整的Dockerfile示例
5.1 創(chuàng)建mytomcat文件
5.2 構(gòu)建鏡像
注意:docker build 命令最后要有一個.
5.3 運(yùn)行鏡像?