使用 Dockerfile 創(chuàng)建鏡像

Dockerfile 是一個文本格式的配置文件,用戶可以使用 Dockerfile 快速創(chuàng)建自定義的鏡像套耕。

基本結(jié)構(gòu)

Dockerfile 由一行行命令語句組成谁帕,并且支持以 # 開頭的注釋行。
Dockerfile 分為四部分:基礎(chǔ)鏡像信息冯袍、維護(hù)者信息匈挖、鏡像操作指令和容器啟動時執(zhí)行指令。
例如:

# This dockerfile user the ubuntu image
# VERSION 2 - EDITON 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..

# 第一行必須指定基于的基礎(chǔ)鏡像
FROM ubuntu

# 維護(hù)者信息
MAINTAINER  docker_user docker_user@email.com

# 鏡像的操作指令
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

# 容器啟動時執(zhí)行指令
CMD /usr/sbin/nginx

指令

指令的一般格式為 INSTRUCTION arguments, 指令包括 FROM康愤、MAINTAINER儡循、RUN 等。

1.FROM

格式為 FROM <image> 或 FROM<image>:<tag>征冷。
例如: FROM ubuntu

2.MAINTAINER

格式為 MAINTAINER <name>择膝, 指定維護(hù)者維息。
例如:MAINTAINER docker_user docker_user@email.com

3.RUN

格式為 RUN <command> 或 RUN ["executable", "param1", "param2"]检激。
每條RUN 指令將在當(dāng)前鏡像基礎(chǔ)上執(zhí)行指定命令肴捉,交提交為新的鏡像。當(dāng)命令較長時可以使用 \ 來換行叔收。

4.CMD

支持三種格式:

  • CMD ["executable","param1',"param2"] 使用 exec 執(zhí)行齿穗,推薦方式。
  • CMD command param1 param2 在 /bin/sh 中執(zhí)行饺律,提供給需要交互的應(yīng)用缤灵。
  • CMD ["param1","param2"] 提供給 ENTRYPOINT 的默認(rèn)參數(shù)。
    指定啟動容器時執(zhí)行的命令蓝晒,每個Dockerfile 只能有一條 CMD命令。如果指定了多條命令帖鸦,只有最后一條會被執(zhí)行芝薇。
    如果用戶啟動容器時指定了運(yùn)行的命令,則會覆蓋掉 CMD 指定的命令作儿。

5.EXPOSE

格式為 EXPOSE <port> [<prot>...]
例如:
EXPOSE 22 80 8443

6.ENV

格式為 ENV <key> <value>洛二。指定一個環(huán)境變量,會被后續(xù) RUN 指令使用攻锰,并在容器運(yùn)行時保持晾嘶。例如:

ENV PG_MAJOR 9.3
ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgree-PG_VERSION.tar.xz | tar -xJC /usr/src/postgree && ...
ENV PATH /usr/local/postgree-$PG_MAJOR/bin:$PATH

7.ADD

格式為 ADD <src><dest>
該命令將復(fù)制指定的<src>到容器中的<dest>。其中<src>可以是Dockerfile 所在目錄的一個相對路徑(文件或目錄)娶吞;也可以是一個URL垒迂;還可以是一個 tar 文件(自動解壓為目錄)

8.COPY

格式為 COPY <src><dest>
復(fù)制本地主機(jī)的<src> 為容器中的<dest>。目標(biāo)路徑不存在時妒蛇,會自動創(chuàng)建机断。
當(dāng)使用本地目錄為源目錄時楷拳,推薦使用COPY

9 ENTRYPOINT

有兩種格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2 (shell 中執(zhí)行)
配置容器啟動后執(zhí)行的命令,并且不可被 docker run 提供的參數(shù)覆蓋吏奸。
每個Dockerfile 中只能有一個 ENTRYPOINT, 當(dāng)指定多個 ENTRYPOINT 時欢揖,只有最后一個生效。

創(chuàng)建鏡像

編寫完成 Dockerfile 之后奋蔚,可以通過docker build 命令來創(chuàng)建鏡像她混。
要指定鏡像的標(biāo)簽信息,可以通過 -t 選項(xiàng)
例如泊碑,指定 Dockerfile 所在路徑為 /tmp/docker_builder/, 并且生成鏡像標(biāo)簽為 build_repo/first_images,可以使用下面的命令:

root@localhost:~# sudo docker build -t build_repo/first_image /tmp/docker_builder/

小結(jié)

本章主要介紹Dockerfile 配置文件的重要概念坤按,包括基本結(jié)構(gòu)、所支持的內(nèi)部指令蛾狗,以及使用它創(chuàng)建鏡像的基本過程晋涣。
DockerHub 和 DockerPool 社區(qū)都提供了大量的 Dockerfile 范例供大家參考。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沉桌,一起剝皮案震驚了整個濱河市谢鹊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌留凭,老刑警劉巖佃扼,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蔼夜,居然都是意外死亡兼耀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門求冷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘤运,“玉大人,你說我怎么就攤上這事匠题≌兀” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵韭山,是天一觀的道長郁季。 經(jīng)常有香客問我,道長钱磅,這世上最難降的妖魔是什么梦裂? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮盖淡,結(jié)果婚禮上年柠,老公的妹妹穿的比我還像新娘。我一直安慰自己禁舷,他們只是感情好彪杉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布毅往。 她就那樣靜靜地躺著,像睡著了一般派近。 火紅的嫁衣襯著肌膚如雪攀唯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天渴丸,我揣著相機(jī)與錄音侯嘀,去河邊找鬼。 笑死谱轨,一個胖子當(dāng)著我的面吹牛戒幔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播土童,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼诗茎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了献汗?” 一聲冷哼從身側(cè)響起敢订,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎罢吃,沒想到半個月后楚午,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尿招,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年矾柜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片就谜。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡怪蔑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丧荐,到底是詐尸還是另有隱情饮睬,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布篮奄,位于F島的核電站,受9級特大地震影響割去,放射性物質(zhì)發(fā)生泄漏窟却。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一呻逆、第九天 我趴在偏房一處隱蔽的房頂上張望夸赫。 院中可真熱鬧,春花似錦咖城、人聲如沸茬腿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽切平。三九已至握础,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悴品,已是汗流浹背禀综。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苔严,地道東北人定枷。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像届氢,于是被迫代替她去往敵國和親欠窒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

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