Docker 大熱,還不了解 Dockerfile 你就OUT啦~

前言:近年來 Docker 非忱ǜ模火错邦,想要玩好 Docker 的話 Dockerfile 是繞不開的探赫,這就好比想要玩好 Linux 服務(wù)器繞不開 shell 道理是一樣的。今天我們就來聊一聊 Dockerfile 怎么寫撬呢,那些指令到底是什么意思伦吠。

一、先來看一個簡單的 Dockerfile

#這個Dockerfile作用是打一個python3項目環(huán)境

二魂拦、Dockerfile 編寫規(guī)則

指令到小寫不敏感毛仪,為了區(qū)分習慣上用大寫

Dockerfile 非注釋行第一行必須是 FROM

文件名必須是 Dockerfile

Dockerfile 指定一個專門的目錄為工作空間

所有引入映射的文件必須在這個工作空間目錄下

Dockerfile 工作空間目錄下支持隱藏文件(.dockeringore)

(.dockeringore)作用是用于存放不需要打包導(dǎo)入鏡像的文件,根目錄就是工作空間目錄

每一條指令都會生成一個鏡像層芯勘,鏡像層多了執(zhí)行效率就慢箱靴,能寫成一條指定的就寫成一條

三、Dockerfile 指令詳解

1.FROM:基礎(chǔ)鏡像

1.1荷愕、FROM是Dockerfile文件開篇第一個非注釋行代碼

2.MAINTAINER:鏡像作者信息

2.1衡怀、廢棄了棍矛,使用LABLE替代

3.LABLE:鏡像描述信息

3.1、LABLE author="haili"

4.COPY:從 Docker 宿主機復(fù)制文件至創(chuàng)建的新鏡像文件

4.1抛杨、COPY <src> <dest>

5.ADD:類似于 COPY 指令够委,ADD 支持 tar 文件和 URL 路徑

5.1、ADD <src> <dest>

6.WORKDIR:用于為 Dockerfile 中所有的 RUN怖现、CMD茁帽、ENTRYPOINT、COPY屈嗤、ADD 指定設(shè)定工作目錄

6.1潘拨、WORKDIR /mnt,如果目錄不存在會自動創(chuàng)建恢共,包括他的父目錄

7.VOLUME:數(shù)據(jù)卷战秋,用于在 image 中創(chuàng)建掛載點目錄,以掛載 Docker host 上的卷或者其他容器上的卷

7.1讨韭、VOLUM mount_point

8.EXPOSE:為容器打開指定的監(jiān)聽端口以實現(xiàn)與外部通信

8.1脂信、EXPOSE <port> </portocol>

9.ENV:用于為鏡像定義所需的環(huán)境變量,可以被 Dockerfile 文件中其他命令調(diào)用(ENV透硝、ADD狰闪、COPY、RUN濒生、CMD)

9.1埋泵、ENV key value

10.RUN:docker build 鏡像構(gòu)建的時候需要執(zhí)行的 shell 命令默認"/bin/sh -c"運行

10.1、docker build過程中需要執(zhí)行的命令

11.CMD:啟動容器指定默認要運行的程序或命令罪治,默認"/bin/sh -c"運行

11.1丽声、docker run過程中需要執(zhí)行的命令

12.ENTRYPOINT:類型 CMD 指令的功能,用于為容器指定默認運行程序或命令

1觉义、與CMD不同的是雁社,由ENTRYPOINT啟動的程序不會被docker run命令行指定的參數(shù)覆蓋,這些命令行參數(shù)會被當做參數(shù)傳遞給ENTRYPOINT指定的程序

13.CMD 和 ENTRYPOINT 同時存在 Dockerfile 中

1晒骇、CMD的值會當做參數(shù)傳遞給ENTRYPOINT

14.USER:指定運行 image 時和 Dockerfile 中任何 RUN霉撵、CMD、ENTRYPOINT 指令指定的程序的用戶

1洪囤、使用用戶名或者UID

15.HEALTHCHECK:健康檢查徒坡,定義一個命令用于檢查主進程工作狀態(tài)是否健康

15.1、HEALTHCHECK參數(shù)

16.SHELL:指定運行 RUN瘤缩、CMD喇完、ENTRYPOINT 的 shell 程序

17.OPSIGNAL:給主進程發(fā)送信號

18.ARG:docker build 過程中的參數(shù)

18.1、定義pyton鏡像作者剥啤,通過參數(shù)傳入

19.ONBUILD:用于在 Dockerfile 中定義一個觸發(fā)器

19.1锦溪、Dockerfile1中加一個ONBUILD add file奄喂,當docker build -t=testpython Dockerfile1的時候ONBU

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市海洼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌富腊,老刑警劉巖坏逢,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赘被,居然都是意外死亡是整,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門民假,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮入,“玉大人,你說我怎么就攤上這事羊异∈滦悖” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵野舶,是天一觀的道長易迹。 經(jīng)常有香客問我,道長平道,這世上最難降的妖魔是什么睹欲? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮一屋,結(jié)果婚禮上窘疮,老公的妹妹穿的比我還像新娘。我一直安慰自己冀墨,他們只是感情好闸衫,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轧苫,像睡著了一般楚堤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上含懊,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天身冬,我揣著相機與錄音,去河邊找鬼岔乔。 笑死酥筝,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的雏门。 我是一名探鬼主播嘿歌,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掸掏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宙帝?” 一聲冷哼從身側(cè)響起丧凤,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎步脓,沒想到半個月后愿待,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡靴患,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年仍侥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸳君。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡农渊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出或颊,到底是詐尸還是另有隱情砸紊,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布囱挑,位于F島的核電站批糟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏看铆。R本人自食惡果不足惜徽鼎,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望弹惦。 院中可真熱鬧否淤,春花似錦、人聲如沸棠隐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽助泽。三九已至啰扛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗡贺,已是汗流浹背隐解。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诫睬,地道東北人煞茫。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親续徽。 傳聞我的和親對象是個殘疾皇子蚓曼,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

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