Dockerfile筆記

最近實驗室項目需要使用Docker鏡像部署安裝tensorflow畔派,為理解其原理,學習了Dockerfile指令相關知識。這里對學習筆記進行整理記錄速兔。

1.什么是Dockerfile

使用Docker容器之前要先有鏡像坛怪,既可以通過Docker pull從官方遠程倉庫下載他人創(chuàng)建并上傳的鏡像淤齐,也可以自定義鏡像。Dockerfile就是用來自定義鏡像的描述性文件袜匿。編寫好Dockerfile后更啄,通過Dokcer bulid命令便可將其創(chuàng)建為一個鏡像。

2.Dockerfile基本結構

Dokcerfile文件由一行行命令組成居灯,通常一個Dokcerfile文件可以分為四個部分:指定基礎鏡像祭务、指定維護者信息、指定對鏡像執(zhí)行的命令穆壕,以及指定容器啟動時執(zhí)行的命令待牵。

3.Dockerfile指令

注釋:Dockerfile支持以#開頭的注釋語句。

FROM:用于指定基礎鏡像喇勋,必須在其他指令出現(xiàn)之前指定缨该。比如FROM ubuntu 指定了ubuntu鏡像為基礎鏡像。除了可以指定官方遠程倉庫中的鏡像川背,也可以指定位于本地倉庫中的鏡像贰拿。

MAINTAINER:指定該Dockerfile的維護者信息。

RUN:用于對當前鏡像執(zhí)行命令熄云。(主要用于安裝軟件膨更,所指定的命令必須被基礎鏡像所支持)可選的格式有RUN<command>和RUN [“executable”, “param1”,“param2”]。前者指定的命令會默認在shell終端中運行缴允,后者可以比較靈活地指定在其他終端上運行命令荚守。每條指令會在當前鏡像基礎上珍德,覆蓋新的一層。當命令較長時可以使用“\”來換行矗漾。

CMD:指定容器啟動時執(zhí)行的命令锈候。若用戶啟動容器時已經指定用來運行的命令,則會覆蓋掉CMD指定的命令敞贡。另外泵琳,如果在Dockerfile中通過CMD指定了多條命令,只有最后一條命令會被執(zhí)行誊役。

EXPOSE:指定Docker容器對外暴露的端口获列。比如EXPOSE 80命令表示該Docker容器對外暴露80端口。在運行容器時蛔垢,可以通過-P參數(shù)來為該端口綁定一個隨機分配的外部主機端口击孩,也可以通過-p參數(shù)來具體指定一個外部主機端口與之綁定。當Docker內部端口與外部主機端口綁定后啦桌,便可通過該外部主機端口訪問Docker內部的服務溯壶。

ENV:指定環(huán)境變量。格式為ENV<key><value>甫男,指定的環(huán)境變量會被后續(xù)RUN指令使用且改。

ADD:格式為ADD<src><dest>,該指令表示將復制指定的<src>到容器中的<dest>板驳。其中<src>可以是Dockerfile所在目錄的一個相對路徑(文件或目錄)又跛;也可以是一個URL;或者是一個tar文件(自動解壓為目錄)若治。

COPY:格式為格式為COPY<src><dest>慨蓝,與ADD指令相比,這里的<src>只能是Dokcerfile所在目錄的相對路徑(文件或目錄)端幼。

ENTRYPOINT:和CMD指令一樣礼烈,指定容器啟動后執(zhí)行的命令。唯一的不同是這里指定的命令不會被docker run提供的參數(shù)覆蓋婆跑?

VOLUME:格式為VOLUME [“/data”]此熬,該指令為容器創(chuàng)建一個數(shù)據(jù)卷,可被從本地主機目錄或文件掛載滑进,也可將該容器作為數(shù)據(jù)卷容器犀忱,直接被其他容器掛載,從而實現(xiàn)兩個容器之間的數(shù)據(jù)共享扶关。

USER:格式為USER daemon阴汇,該指令指定運行容器時的用戶名或UID,后續(xù)的RUN指令也會使用指定用戶节槐。

WORKDIR:格式為WORKDIR /path/to/workdir搀庶,該指令為后續(xù)的RUN拐纱、CMD、ENTRYPOINT指令配置工作目錄哥倔〈撩担可以連續(xù)使用多個WORKDIR指令,后續(xù)命令如果參數(shù)是相對路徑未斑,則會基于之前命令指定的路徑。

ONBUILD:格式為ONBUILD [INSTRUCTION]币绩。當另外一個鏡像以當前鏡像為基礎鏡像編寫Dockerfile文件蜡秽,并創(chuàng)建新鏡像時,該指令指定的命令會運行缆镣。

4.創(chuàng)建鏡像

編寫完成Dockerfile文件后芽突,可以使用dokcer build命令將該Dockerfile文件創(chuàng)建為鏡像《埃基本格式為docker build [選項] 路徑寞蚌。

5.Dockerfile技巧

1.合并命令

Dockerfile 中的每一個命令都會創(chuàng)建一個新的 layer,而一個容器能夠擁有的最多 layer 數(shù)是有限制的钠糊。所以應該在權衡可讀性的基礎上挟秤,盡量將邏輯上連貫的命令進行合并。比如可以將EXPOSE 80 和 EXPOSE 8080兩句命令合并為EXPOSE 80 8080抄伍,或者使用“&&”將多句RUN命令進行合并艘刚。

2.使用.dockerignore

當使用docker build命令創(chuàng)建鏡像時,該命令會讀取指定路徑下(包括子目錄)的Dokcerfile截珍。為提高讀取效率攀甚,除了可將Dockerfile放置在空目錄下之外,也可以使用.dockerignore文件來讓Docker忽略路徑下指定的目錄和文件岗喉。

參考資料

《Dokcer技術入門與實戰(zhàn)》

http://blog.csdn.net/qinyushuang/article/details/43342553

http://www.jb51.net/article/106483.htm

http://www.bubuko.com/infodetail-1792569.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末秋度,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钱床,更是在濱河造成了極大的恐慌荚斯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诞丽,死亡現(xiàn)場離奇詭異鲸拥,居然都是意外死亡,警方通過查閱死者的電腦和手機僧免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門刑赶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人懂衩,你說我怎么就攤上這事撞叨〗鹱伲” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵牵敷,是天一觀的道長胡岔。 經常有香客問我,道長枷餐,這世上最難降的妖魔是什么靶瘸? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮毛肋,結果婚禮上怨咪,老公的妹妹穿的比我還像新娘。我一直安慰自己润匙,他們只是感情好诗眨,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孕讳,像睡著了一般匠楚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厂财,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天芋簿,我揣著相機與錄音,去河邊找鬼璃饱。 笑死益咬,一個胖子當著我的面吹牛,可吹牛的內容都是我干的帜平。 我是一名探鬼主播幽告,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼裆甩!你這毒婦竟也來了冗锁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤嗤栓,失蹤者是張志新(化名)和其女友劉穎冻河,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茉帅,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡叨叙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了堪澎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擂错。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖樱蛤,靈堂內的尸體忽然破棺而出钮呀,到底是詐尸還是另有隱情剑鞍,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布爽醋,位于F島的核電站蚁署,受9級特大地震影響,放射性物質發(fā)生泄漏蚂四。R本人自食惡果不足惜光戈,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遂赠。 院中可真熱鬧田度,春花似錦、人聲如沸解愤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽送讲。三九已至,卻和暖如春惋啃,著一層夾襖步出監(jiān)牢的瞬間哼鬓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工边灭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留异希,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓绒瘦,卻偏偏與公主長得像称簿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惰帽,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容

  • 轉載自 http://blog.opskumu.com/docker.html 一憨降、Docker 簡介 Docke...
    極客圈閱讀 10,499評論 0 120
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,530評論 15 147
  • docker基本概念 1. Image Definition 鏡像 Image 就是一堆只讀層 read-only...
    慢清塵閱讀 8,744評論 1 21
  • 五该酗、Docker 端口映射 無論如何授药,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的。此外呜魄,除了...
    R_X閱讀 1,748評論 0 7
  • 不再期待 當不再期待時悔叽,不希望被困惑時,卻總有外在的在不經意間撞擊心扉爵嗅。如流星落入寧靜夜的懷抱娇澎,瞬間即逝,卻也留...
    繁星如海閱讀 191評論 0 0