dockerfile構(gòu)建docker鏡像詳細(xì)說明着裹,主要是springboot的jar包構(gòu)建鏡像樣例

dockerfile構(gòu)建docker鏡像詳細(xì)說明灯萍,主要是springboot的jar包構(gòu)建鏡像樣例

1.鏡像構(gòu)建命令:docker build

圖解

在這里插入圖片描述

<font color=#999AAA >啟動(dòng)命令:<font color=red>(注意最后面有一個(gè)點(diǎn)荚守,不要忘記)

docker build -t 自定義鏡像名:tag .

<font color=#999AAA >執(zhí)行docker build時(shí),docker server會(huì)先把上下文的所有文件都裝著起來蚤告,然后根據(jù)dockerfile文件內(nèi)容來一條條執(zhí)行指令來構(gòu)建鏡像

<font color=red>警告:

不要用你的根目錄下當(dāng)上下文目錄努酸,/作為PATH因?yàn)樗鼤?huì)導(dǎo)致生成到您的硬盤驅(qū)動(dòng)器的全部內(nèi)容傳輸?shù)絛ocker 守護(hù)進(jìn)程。導(dǎo)致服務(wù)器宕機(jī)

2.初次體驗(yàn):我的第一個(gè)簡單樣例dockerfile構(gòu)建docker鏡像

1)拉取一個(gè)centos鏡像

docker pull centos:7

2)創(chuàng)建文件

touch test.txt

3)編寫dockerfile文件杜恰,內(nèi)容如下

FROM centos:7
COPY test.txt /

4)構(gòu)建鏡像

docker build -t mycentos1 .

<font color=#999AAA >運(yùn)行結(jié)果:(Successfully)

Sending build context to Docker daemon  3.072kB
Step 1/2 : FROM centos:7
 ---> b5b4d78bc90c
Step 2/2 : COPY test.txt /
 ---> 0336262a3ff6
Successfully built 0336262a3ff6
Successfully tagged mycentos1:latest

5)查看構(gòu)建好的鏡像:docker images

在這里插入圖片描述

6)運(yùn)行鏡像:docker run -it mycentos1

<font color=#999AAA >鏡像的已經(jīng)存在test.txt获诈,證明COPY test.txt /已經(jīng)復(fù)制到鏡像里了

在這里插入圖片描述

7)完成第一個(gè)構(gòu)建鏡像

3.dockerfile文件的指令關(guān)鍵字說明(就是命令)

<font color=#999AAA >指令說明都是來自官網(wǎng)

指令 參數(shù)形式 描述
FROM FROM [--platform=<platform>] <image>[:<tag>] [AS <name>] FROM指令初始化一個(gè)新的構(gòu)建階段,并為后續(xù)指令設(shè)置 基本映像心褐。
<font style="color: #f70404">(重點(diǎn))因此舔涎,有效的Dockerfile必須從FROM指令開始。</font>
(推薦)最好從公共存儲庫中拉出圖像開始構(gòu)建逗爹。
MAINTINER MAINTAINER <name> MAINTAINER指令設(shè)置生成圖像的作者字段
<font style="color: #f70404">(官網(wǎng)已經(jīng)不建議使用亡嫌,改成:LABEL)</font>
LABEL LABEL <key>=<value> <key>=<value> <key>=<value> ... 標(biāo)簽:LABEL指令將元數(shù)據(jù)添加到圖像。ALABEL是鍵值對掘而。要在LABEL值中包含空格挟冠,請像在命令行分析中一樣使用引號和反斜杠。
RUN (1)RUN <command>shell形式袍睡,命令在shell中運(yùn)行知染,默認(rèn)情況下/bin/sh -c在Linux或cmd /S /CWindows上運(yùn)行)
(2)RUN ["executable", "param1", "param2"]執(zhí)行表格)
執(zhí)行shell命令、Linux命令斑胜、安裝命令等
COPY COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]
copy和add功能很像控淡,都有把上下文目錄資源復(fù)制到鏡像的功能
copy是對上下文的資源直接復(fù)制
add還可以是url,對tar還會(huì)自動(dòng)解壓
ADD ADD [--chown=<user>:< group >] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
ENV ENV <key>=<value> ... ENV指令將環(huán)境變量<key>設(shè)置為value <value>止潘。此值將在構(gòu)建階段的所有后續(xù)指令所在的環(huán)境中使用掺炭,并且在許多情況下也可以內(nèi)聯(lián)替換
例如:docker run --env key=value就會(huì)替換dockerFile原來定義的環(huán)境變量,達(dá)到動(dòng)態(tài)設(shè)置的功能
EXPOSE EXPOSE <port> [<port>/<protocol>...]
例如:EXPOSE 80/udp
EXPOSE指令通知Docker容器在運(yùn)行時(shí)監(jiān)聽指定的網(wǎng)絡(luò)端口覆山。您可以指定端口是偵聽TCP還是UDP竹伸,如果未指定協(xié)議,則默認(rèn)值為TCP簇宽。
就是把容器的端口爆露出來勋篓,不然容器將不給訪問魏割,-p標(biāo)記ondocker run 發(fā)布和映射一個(gè)或多個(gè)端口譬嚣,或者使用-P標(biāo)記發(fā)布所有公開的端口并將它們映射到高階端口钞它。
VOLUME VOLUME ["/data"] 掛載卷:VOLUME指令創(chuàng)建具有指定名稱的安裝點(diǎn)拜银,并將其標(biāo)記為保存來自本機(jī)主機(jī)或其他容器的外部安裝的卷。
就是把容器的目錄能掛載到本地主機(jī)上尼桶,達(dá)到數(shù)據(jù)保護(hù)的作用
例如:docker run -v 本地目錄:容器目錄操灿,就是把容器目錄掛載到本地主機(jī)了,然后就可以相互通數(shù)據(jù)泵督,雙向綁定趾盐,那邊修改都會(huì)同步更新,前提就是要dockerfile構(gòu)建的要先定義好救鲤,不然不會(huì)生效
WORKDIR WORKDIR /path/to/workdir 是對容器進(jìn)行交互模式時(shí),第一次進(jìn)來容器的目錄落腳點(diǎn)秩冈,還有對copy,add也有作用,細(xì)看官網(wǎng)說明
ENTRYPOINT (1)ENTRYPOINT ["executable", "param1", "param2"]
(2)ENTRYPOINT command param1 param2
入口點(diǎn):ENTRYPOINT允許您配置將作為可執(zhí)行文件運(yùn)行的容器入问。一般可以和CMD集合使用
CMD (1) CMD ["executable","param1","param2"]exec形式丹锹,這是首選形式)
(2) CMD ["param1","param2"](作為ENTRYPOINT的默認(rèn)參數(shù)
(3)CMD command param1 param2外殼形式)
CMD指令中只能有一條指令Dockerfile。如果您列出多個(gè)队他,CMD 則只有最后一個(gè)CMD才會(huì)生效卷仑。
如果用戶指定的參數(shù),docker run則它們將覆蓋中指定的默認(rèn)參數(shù)CMD麸折。

4.構(gòu)建springboot的jar鏡像

1)前提條件

<font color=#999AAA >已經(jīng)有一個(gè)可以運(yùn)行的springboot的jar包

2)編寫dockerfile

# 基于jdk8環(huán)境
FROM openjdk:8
# 鏡像描述
LABEL version="1.0" \
      author="binggoling" \
      memo="我的構(gòu)建第一個(gè)springboot的jar,dockerfile文件"
#拷貝jar包到鏡像里
COPY springbootdemo-0.0.1-SNAPSHOT.jar app.jar
#創(chuàng)建文件
RUN bash -c "touch /app.jar"
#設(shè)置環(huán)境變量
ENV xms=128m
ENV xmx=512m
# 掛載目錄。這個(gè)是我的日志生產(chǎn)的目錄
VOLUME /testlog
# 工作目錄
WORKDIR /
#暴露端口
EXPOSE 8080
#容器啟動(dòng)時(shí)的運(yùn)行命令
CMD java -Xms$xms -Xmx$xmx -jar /app.jar --server.port=8080

3)構(gòu)建鏡像

docker build -t myjar .

<font color=#999AAA >構(gòu)建結(jié)果:

Sending build context to Docker daemon  48.31MB
Step 1/10 : FROM openjdk:8
 ---> 3d06e674f731
Step 2/10 : LABEL version="1.0"       author="binggoling"       memo="我的構(gòu)建第一個(gè)springboot的jar,dockerfile文件"
 ---> Using cache
 ---> f080ad273539
Step 3/10 : COPY springbootdemo-0.0.1-SNAPSHOT.jar app.jar
 ---> Using cache
 ---> f2e7909f5ac4
Step 4/10 : RUN bash -c "touch /app.jar"
 ---> Using cache
 ---> 6233753d2e9c
Step 5/10 : ENV xms=128m
 ---> Using cache
 ---> f0c98951d24e
Step 6/10 : ENV xmx=512m
 ---> Using cache
 ---> 00f882ae0119
Step 7/10 : VOLUME /testlog
 ---> Using cache
 ---> 895097ffbabb
Step 8/10 : WORKDIR /
 ---> Using cache
 ---> 928fad7a73a7
Step 9/10 : EXPOSE 8080
 ---> Using cache
 ---> 2f608ba6e225
Step 10/10 : CMD java -Xms$xms -Xmx$xmx -jar /app.jar --server.port=8080
 ---> Using cache
 ---> 09e6c2b3a96e
Successfully built 09e6c2b3a96e
Successfully tagged myjar:latest

<font color=#999AAA >查看鏡像:docker images

在這里插入圖片描述

4)啟動(dòng)容器

docker run --name myjar -v  /usr/local/docker/make/log:/testlog -p 8085:8080 -d myjar
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窜锯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锚扎,更是在濱河造成了極大的恐慌,老刑警劉巖馁启,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惯疙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)霉颠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蒿偎,“玉大人怀读,你說我怎么就攤上這事∑锿眩” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵惜姐,是天一觀的道長椿息。 經(jīng)常有香客問我,道長寝优,這世上最難降的妖魔是什么条舔? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任乏矾,我火速辦了婚禮,結(jié)果婚禮上钻心,老公的妹妹穿的比我還像新娘凄硼。我一直安慰自己捷沸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布痒给。 她就那樣靜靜地躺著,像睡著了一般苍柏。 火紅的嫁衣襯著肌膚如雪尼斧。 梳的紋絲不亂的頭發(fā)上试吁,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機(jī)與錄音熄捍,去河邊找鬼烛恤。 笑死治唤,一個(gè)胖子當(dāng)著我的面吹牛棒动,可吹牛的內(nèi)容都是我干的宾添。 我是一名探鬼主播船惨,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粱锐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起怜浅,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恶座,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跨琳,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年脉让,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溅潜。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滚澜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情博秫,我是刑警寧澤潦牛,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布挡育,位于F島的核電站巴碗,受9級特大地震影響即寒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜母赵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一凹嘲、第九天 我趴在偏房一處隱蔽的房頂上張望师倔。 院中可真熱鬧周蹭,春花似錦疲恢、人聲如沸瓷胧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至揍移,卻和暖如春货矮,著一層夾襖步出監(jiān)牢的瞬間羊精,已是汗流浹背囚玫。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工读规, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人束亏。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓趣避,卻偏偏與公主長得像啸箫,于是被迫代替她去往敵國和親虹茶。 傳聞我的和親對象是個(gè)殘疾皇子盏混,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

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