docker Dockerfile

Dockerfile 介紹

它是一個文本文件,鏡像文件構(gòu)建腳本
由一些列用于根據(jù)基礎(chǔ)鏡像構(gòu)建新的鏡像文件的專用指令序列組成

Dockerfile command

  • ADD
  • COPY
  • ENV
  • EXPOSE
  • FROM
  • MAINTANIER
  • LABEL
  • STOPSIGNAL
  • USER
  • VOLUME
  • WORKDIR

FROM

必須是第一個非注釋行,用于指定所用到的基礎(chǔ)鏡像

語法格式
  • FROM <image>[:<tag>]
  • FROM <image>@<digest>

注意: 盡量不要在一個dockerfile中使用多個FROM指令

MAINTANIER

用于提供信息的指令粥航,用于讓作者提供本人的信息
建議緊跟在FROM以后危队,不限制出現(xiàn)的位置

語法格式

MAINTANIER <authors detail>

COPY

用于docker主機(jī)復(fù)制文件指向正在創(chuàng)建的映像文件中

語法格式
  • COPY SRC DEST
  • COPY "SRC"... "DEST"
解釋
  • src: 要復(fù)制的源文件或目錄,支持使用通配符
  • dest: 目錄路徑,正在創(chuàng)建的鏡像文件的文件系統(tǒng)路徑,建議使用絕對路徑,否則,則相對于WORKDIR而言,所有復(fù)制生成的目錄文件的uid和gid均為0
注意
  • src 必須是build上下文中的路徑,因此不能使用類似"../some"的路徑
  • src 如果是目錄,遞歸復(fù)制會自動行,如果有多個src ,包括src上使用了通配符這種情況,此時,dest必須是目錄,而且必須以/結(jié)尾
  • dest 如果事先不存在,它將被自動創(chuàng)建,包括其父目錄

ADD

類似于COPY指令,額外還支持復(fù)制tar文件,以及URL語法

語法格式
  • ADD SRC DEST
  • ADD "SRC" ... "DEST"
注意
  • 以url格式指定的源文件,下載完成后其目標(biāo)文件的權(quán)限為600
  • 如果src是url,且dest不以/結(jié)尾,則src指定的文件將被下載并直接被創(chuàng)建為dest, 如果dest以/結(jié)尾,則url指定的文件被下載至dest中,并保留原名
  • 如果src是一個tar文件,它將被展開為一個目錄,其行為類似于tar -x 命令,但是如果通過url下載到的文件是tag格式的,是不會自動被展開的

ENV

定義環(huán)境變量,此變量可被當(dāng)前dockerfile文件中的其它指令調(diào)用
調(diào)用格式為$varaible_name或者${variable_name}

語法格式
  • ENV <key> <value> 一次定義一個變量
  • ENV <key>=<value> ... 一次定義多個變量 如果value中有空白字符,如要用\字符進(jìn)行轉(zhuǎn)義
注意
  • ENV 定義的環(huán)境變量在鏡像運(yùn)行的整個過程中一直存在
  • 因此可以使用inspect命令查看,甚至可以再docker run啟動此鏡像時候,使用--env選項來修改制定的環(huán)境值

USER

指定運(yùn)行鏡像時候, 或運(yùn)行Dockerfile文件中的任何RUN,CMD,/ENTRYPORINT指定的程序時的用戶名或者UID

語法格式
  • USER <uid>|<USERNAME>
注意
  • UID 應(yīng)該使用/etc/passwd 文件存在的用戶的UID,否則,docker run可能會出現(xiàn)錯誤

WORKDIR

用于為Dockerfile中所有的指令指定工作目錄

語法格式
  • WORKDIR <dirpath>
注意
  • WORKDIR 可出現(xiàn)多次,也可使用相對路徑,此時表示相對于前一個WORKDIR指令指定的路徑
  • WORKDIR 還可以調(diào)用ENV定義的環(huán)境變量的值

VOLUME

用于目標(biāo)鏡像文件中創(chuàng)建一個掛載點(diǎn)的目錄,用于掛載主機(jī)上的卷或者其它容器的卷

語法格式
  • VOLUME <mountpoint>
  • VOLUME ["<mountpoint>" .... ]

RUN

于指定docker build命令過程中運(yùn)行的命令

語法格式
  • RUN <COMMAND>
  • RUN ["executeable" ,"<param1>" ,"<param2>" ]
注意
  • 每個run命令就額外加一層,所以建議一個RUN指令執(zhí)行多個命令

CMD

類似于RUN指令,用于運(yùn)行程序,但二者運(yùn)行的是場景不同
CMD在docker run時運(yùn)行而非docker build,CMD指令的首
要目的為了在于為啟動的容器指定默認(rèn)要運(yùn)行的程序程序
運(yùn)行結(jié)束, 容器也就結(jié)束,不過,CMD指令指定的程序可被
docker run命令行參數(shù)中執(zhí)行的要運(yùn)行的程序所覆蓋

語法格式
  • CMD <COMMAND>
  • CMD ["executeable" ,"<param1>" ,"<param2>" ]
  • CMD ["<para1>","<param2>"]
注意
  • 第三種為ENTRYPOINT指令指定的程序的默認(rèn)參數(shù)
  • 如果dockefile中存在多個CMD指令,只會最后一個生效

ENTRYPOINT

類似于CMD,為容器指定默認(rèn)的啟動程序,不會被docker run
所運(yùn)行的程序所覆蓋.而且這些命令行參數(shù),會被當(dāng)作參數(shù)送
給ENTRYPOINT指令指定的程序但是如果運(yùn)行docker run時,
使用了 --entrypoint選項,此選項的參數(shù)可當(dāng)作要運(yùn)行的程序覆蓋
ENTRYPOINT指令指定的程序

語法格式
  • ENTRYPOINT <COMMAND>
  • ENTRYPOINT ["executeable" ,"<param1>" ,"<param2>" ]

EXPOSE

用于為容器指定要暴露的端口

語法格式
  • EXPOSE <PORT>[/<PROTOCAL>] [<PROT></PROTOCAL>]
  • PROTOCAL: 默認(rèn)為tcp,可以是tcp或者udp
例如 eg:
  • EXPOSE 11211/tcp 11211/udp

ONBUILD

定義觸發(fā)器

當(dāng)前dockerfile構(gòu)建出的鏡像被用作基礎(chǔ)鏡像,去構(gòu)建其他鏡像的時候,ONBUILD指令指定的操作才會被執(zhí)行

語法格式
  • ONBUILD <instruction>
  • ONBUILD ADD my.conf /etc/mysql/my.conf
注意

ONBUILD不能自我嵌套,且不會觸發(fā)FROM和MAINTERNATER指令

docker command

docker build -t bdshello  .     #創(chuàng)建image鏡像構(gòu)建Dockerfile 
docker run -p 4000:80 bdshello  #啟動bdshello容器 映射端口
docker run -d -p 4000:80 bdshello  #后臺啟動
docker container ls             #顯示所有啟動的容器
docker container ls -a          #顯示所有容器包括不啟動的
docker container stop <hash id>     #優(yōu)雅停止容器 
docker container kill  <hash id>    #強(qiáng)制停止容器
docker container rm <hash id>       #移除容器 
docker container rm  $(docker container ls -a -q)  #移除所有容器 
docker image ls -a                #列出所有鏡像 
docker image rm <image id>        #刪除鏡像
docker image rm $(docker image ls -a -q)  #刪除所有鏡像
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滤奈,一起剝皮案震驚了整個濱河市葵礼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖盾碗,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舀瓢,居然都是意外死亡廷雅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門京髓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來航缀,“玉大人,你說我怎么就攤上這事堰怨∶危” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵诚些,是天一觀的道長飞傀。 經(jīng)常有香客問我,道長诬烹,這世上最難降的妖魔是什么砸烦? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮绞吁,結(jié)果婚禮上幢痘,老公的妹妹穿的比我還像新娘。我一直安慰自己家破,他們只是感情好颜说,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汰聋,像睡著了一般门粪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烹困,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天玄妈,我揣著相機(jī)與錄音,去河邊找鬼髓梅。 笑死拟蜻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的枯饿。 我是一名探鬼主播酝锅,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奢方!你這毒婦竟也來了搔扁?” 一聲冷哼從身側(cè)響起擒权,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阁谆,沒想到半個月后碳抄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡场绿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年剖效,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片焰盗。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡璧尸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出熬拒,到底是詐尸還是另有隱情爷光,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布澎粟,位于F島的核電站蛀序,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏活烙。R本人自食惡果不足惜徐裸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啸盏。 院中可真熱鬧重贺,春花似錦、人聲如沸回懦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怯晕。三九已至潜圃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贫贝,已是汗流浹背秉犹。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稚晚,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓型诚,卻偏偏與公主長得像客燕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子狰贯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350

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