Dockerfile解析

1论矾、Dockerfile 是一個(gè)用來(lái)構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說(shuō)明。

2众旗、Dockerfile解析

#定制的鏡像都是基于 FROM 的鏡像,這里的 nginx 就是定制需要的基礎(chǔ)鏡像趟畏。后續(xù)的操作都是基于 nginx贡歧。
FROM openjdk:8 
#發(fā)布者
MAINTAINER 457030599@qq.com
#指定端口
EXPOSE 8080
#指定時(shí)區(qū)
#ENV
#設(shè)置環(huán)境變量,定義了環(huán)境變量赋秀,那么在后續(xù)的指令中利朵,就可以使用這個(gè)環(huán)境變量。
ENV TZ=Asia/Shanghai
#RUN:用于執(zhí)行后面跟著的命令行命令猎莲。
#shell 格式:
#RUN <命令行命令>
# <命令行命令> 等同于绍弟,在終端操作的 shell 命令。
#exec 格式:
#RUN ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等價(jià)于 RUN ./test.php dev offline
# Dockerfile 的指令每執(zhí)行一次都會(huì)在 docker 上新建一層著洼。所以過(guò)多無(wú)意義的層樟遣,會(huì)造成鏡像膨脹過(guò)大而叼,以 && 符號(hào)連接命令,這樣執(zhí)行后豹悬,只會(huì)創(chuàng)建 1 層鏡像葵陵。
#修改時(shí)期,創(chuàng)建目錄
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && mkdir -p /beam-admin

#WORKDIR
#指定工作目錄屿衅。用 WORKDIR 指定的工作目錄埃难,會(huì)在構(gòu)建鏡像的每一層中都存在。(WORKDIR 指定的工作目錄涤久,必須是提前創(chuàng)建好的)涡尘。
#docker build 構(gòu)建鏡像過(guò)程中的,每一個(gè) RUN 命令都是新建的一層响迂。只有通過(guò) WORKDIR 創(chuàng)建的目錄才會(huì)一直存在考抄。
#格式:
#WORKDIR <工作目錄路徑>
#切換到目錄
WORKDIR /beam-admin
#復(fù)制指令,從上下文目錄中復(fù)制文件或者目錄到容器里指定路徑蔗彤。
#復(fù)制到當(dāng)前目錄 ./
#COPY [--chown=<user>:<group>] <源路徑1>...  <目標(biāo)路徑>
#COPY [--chown=<user>:<group>] ["<源路徑1>",...  "<目標(biāo)路徑>"]
#<目標(biāo)路徑>:容器內(nèi)的指定路徑川梅,該路徑不用事先建好,路徑不存在的話然遏,會(huì)自動(dòng)創(chuàng)建贫途。

#ADD 指令和 COPY 的使用格式一致(同樣需求下,官方推薦使用 COPY)待侵。功能也類似丢早,不同之處如下:
#ADD 的優(yōu)點(diǎn):在執(zhí)行 <源文件> 為 tar 壓縮文件的話,壓縮格式為 gzip, bzip2 以及 xz 的情況下秧倾,會(huì)自動(dòng)復(fù)制并解壓到 <目標(biāo)路徑>怨酝。
#ADD 的缺點(diǎn):在不解壓的前提下,無(wú)法復(fù)制 tar 壓縮文件那先。會(huì)令鏡像構(gòu)建緩存失效农猬,從而可能會(huì)令鏡像構(gòu)建變得比較緩慢。具體是否使用售淡,可以根據(jù)是否需要自動(dòng)解壓來(lái)決定斤葱。
copy beam-admin-0.0.1-SNAPSHOT.jar ./beam-admin.jar
#修改jar包時(shí)間
RUN bash -c 'touch beam-admin.jar'

#CMD
#類似于 RUN 指令,用于運(yùn)行程序揖闸,但二者運(yùn)行的時(shí)間點(diǎn)不同:
#CMD 在docker run 時(shí)運(yùn)行苦掘。
#RUN 是在 docker build。
#作用:為啟動(dòng)的容器指定默認(rèn)要運(yùn)行的程序楔壤,程序運(yùn)行結(jié)束鹤啡,容器也就結(jié)束。CMD 指令指定的程序可被 docker run 命令行參數(shù)中指定要運(yùn)行的程序所覆蓋蹲嚣。
#注意:如果 Dockerfile 中如果存在多個(gè) CMD 指令递瑰,僅最后一個(gè)生效祟牲。
#CMD <shell 命令> 
#CMD ["<可執(zhí)行文件或命令>","<param1>","<param2>",...] 
#CMD ["<param1>","<param2>",...]  # 該寫法是為 ENTRYPOINT 指令指定的程序提供默認(rèn)參數(shù)
#推薦使用第二種格式,執(zhí)行過(guò)程比較明確抖部。第一種格式實(shí)際上在運(yùn)行的過(guò)程中也會(huì)自動(dòng)轉(zhuǎn)換成第二種格式運(yùn)行说贝,并且默認(rèn)可執(zhí)行文件是 sh。
#ENTRYPOINT
#類似于 CMD 指令慎颗,但其不會(huì)被 docker run 的命令行參數(shù)指定的指令所覆蓋乡恕,而且這些命令行參數(shù)會(huì)被當(dāng)作參數(shù)送給 ENTRYPOINT 指令指定的程序。
#但是, 如果運(yùn)行 docker run 時(shí)使用了 --entrypoint 選項(xiàng)俯萎,此選項(xiàng)的參數(shù)可當(dāng)作要運(yùn)行的程序覆蓋 ENTRYPOINT 指令指定的程序傲宜。
#優(yōu)點(diǎn):在執(zhí)行 docker run 的時(shí)候可以指定 ENTRYPOINT 運(yùn)行所需的參數(shù)。
#注意:如果 Dockerfile 中如果存在多個(gè) ENTRYPOINT 指令夫啊,僅最后一個(gè)生效函卒。
#格式:
#ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
ENTRYPOINT ["nohup","java","-jar","beam-admin.jar","--spring.profiles.active=prod",">/dev/null","2>&1"]

#ARG
#構(gòu)建參數(shù),與 ENV 作用一至撇眯。不過(guò)作用域不一樣报嵌。ARG 設(shè)置的環(huán)境變量?jī)H對(duì) Dockerfile 內(nèi)有效,也就是說(shuō)只有 docker build 的過(guò)程中有效熊榛,構(gòu)建好的鏡像內(nèi)不存在此環(huán)境變量锚国。
#構(gòu)建命令 docker build 中可以用 --build-arg <參數(shù)名>=<值> 來(lái)覆蓋。
#格式:
#ARG <參數(shù)名>[=<默認(rèn)值>]

#VOLUME
#定義匿名數(shù)據(jù)卷玄坦。在啟動(dòng)容器時(shí)忘記掛載數(shù)據(jù)卷血筑,會(huì)自動(dòng)掛載到匿名卷。
#作用:
#避免重要的數(shù)據(jù)营搅,因容器重啟而丟失云挟,這是非常致命的梆砸。
#避免容器不斷變大转质。
#格式:
#VOLUME ["<路徑1>", "<路徑2>"...]
#VOLUME <路徑>
#在啟動(dòng)容器 docker run 的時(shí)候,我們可以通過(guò) -v 參數(shù)修改掛載點(diǎn)帖世。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末休蟹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子日矫,更是在濱河造成了極大的恐慌赂弓,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哪轿,死亡現(xiàn)場(chǎng)離奇詭異盈魁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)窃诉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門杨耙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赤套,“玉大人,你說(shuō)我怎么就攤上這事珊膜∪菸眨” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵车柠,是天一觀的道長(zhǎng)剔氏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)竹祷,這世上最難降的妖魔是什么谈跛? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮溶褪,結(jié)果婚禮上币旧,老公的妹妹穿的比我還像新娘。我一直安慰自己猿妈,他們只是感情好吹菱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著彭则,像睡著了一般鳍刷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俯抖,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天输瓜,我揣著相機(jī)與錄音,去河邊找鬼芬萍。 笑死尤揣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的柬祠。 我是一名探鬼主播北戏,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼漫蛔!你這毒婦竟也來(lái)了嗜愈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤莽龟,失蹤者是張志新(化名)和其女友劉穎蠕嫁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毯盈,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剃毒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赘阀。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陪拘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纤壁,到底是詐尸還是另有隱情左刽,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布酌媒,位于F島的核電站欠痴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秒咨。R本人自食惡果不足惜喇辽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雨席。 院中可真熱鬧菩咨,春花似錦、人聲如沸陡厘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)糙置。三九已至云茸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谤饭,已是汗流浹背标捺。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揉抵,地道東北人亡容。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像冤今,于是被迫代替她去往敵國(guó)和親闺兢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本節(jié)記錄一下Docker鏡像阱佛、容器數(shù)據(jù)卷和Dockerfile解析 一帖汞、Docker鏡像 首先我們明確一下dock...
    奔向算法的喵閱讀 799評(píng)論 1 4
  • 是什么 Dockerfile是用來(lái)構(gòu)建Docker鏡像的構(gòu)建文件,是由一系列命令和參數(shù)構(gòu)成的腳本凑术。 構(gòu)建三步驟編寫...
    __元昊__閱讀 2,342評(píng)論 0 2
  • 那天翩蘸,我連吃了三份老麥的六元早餐,突然覺得這個(gè)世界一下亮了起來(lái)淮逊。原來(lái)幸福只要一個(gè)面包這么簡(jiǎn)單催首,說(shuō)來(lái)就來(lái)扶踊,說(shuō)有就有,...
    子俠閱讀 386評(píng)論 0 2
  • 微信這個(gè)既能發(fā)送文字郎任、又能發(fā)送圖片聲音秧耗,且能即時(shí)視頻通話的社區(qū)交流媒體工具,確實(shí)大大的推進(jìn)了人與人之間的交流舶治,哪怕...
    城市屋檐下閱讀 345評(píng)論 0 2
  • 好詞有:湯湯水水分井,傲氣,覓食霉猛、急忙尺锚、咯咯笑、分明樂意惜浅、隱隱約約瘫辩、反正、咬牙切齒坛悉、疲倦伐厌、油麻地,(是一個(gè)地名)裸影、低估...
    小洺同學(xué)6閱讀 309評(píng)論 0 0