Docker之dockerfile命令詳解

1.容器的生命周期:

* 檢查本地是否存在鏡像刁岸,如果不存在即從遠端倉庫檢索

* 利用鏡像啟動容器

* 分配一個文件系統(tǒng)展鸡,并在只讀的鏡像層外掛載一層可讀寫層

* 從宿主機配置的網(wǎng)橋接口中橋接一個虛擬接口到容器

* 從地址池配置一個IP地址給容器

* 執(zhí)行用戶指定的指令

* 執(zhí)行完畢后容器終止

2.Dockerfile的規(guī)則:

?* 格式:

? 1)#為注釋

? 2)指令(大寫)內(nèi)容(小寫)

? 3)盡管指令是大小寫不敏感的,但是宪睹,我們強烈建議指令用大寫慎冤,內(nèi)容用小寫表示

* Docker是按順序執(zhí)行Dockerfile里的指令集合的(從上到下依次執(zhí)行)

* 每一個Dockerfile的第一個非注釋行指令整葡,必須是“FROM”指令,用于為鏡像文件構(gòu)建過程中良姆,指定基準鏡像肠虽,后續(xù)的指令運行于此基準鏡像所提供的運行環(huán)境中。

*實踐中玛追,基準鏡像可以是任何可用鏡像文件税课,默認情況下,docker build 會在docker 主機(本地)上查找指定的鏡像文件痊剖,當其他本地不存在時韩玩,則會從Docker registry(遠端)上拉取所需鏡像文件。

4組 核心的Dockerfile 指令

* USER/WORKDIR指令

*ADD/EXPOSE指令

*RUN/ENV指令

*CMD/ENTRYPOINT指令

===========================================================

(1)USER/WORKDIR指令:

? ? ? /data/dockerfile/Dockerfile

? ? FROM? stanleyws/nginx:v1.12.2?

? ? USER? nginx?

? ? WORKDIR? /usr/share/nginx/html?

? ? ?WORKDIR 類似于 cd:

[root@docker? dockerfile]#? docker build . -t docker.io/oldboy1103/nginx:v1.12.2_with_user_workdir? ?

[root@docker? dockerfile]# docker run --rm -ti --name nginx123 oldboy1103/nginx:v1.12.2_with_user_workdir /bin/bash? ??

===========================================================

(2)ADD/EXPOSE指令

? ? ?/data/dockerfile/Dockerfile?

? ? FROM stanleyws/nginx:v1.12.2?

? ? ADD index.html /usr/share/nginx/html/index.html?

? ? EXPOSE 80

[root@docker? dockerfile]# vi Dockerfile

? ? FROM stanleyws/nginx:v1.12.2

? ? ADD index.html /usr/share/nginx/html/index.html?

? ? EXPOSE 80

[root@docker? dockerfile]# docker build . -t stableyws/nginx:v1.12.2_with_index_expose?

[root@docker? dockerfile]# docker images?

===========================================================

(3)RUN/ENV 指令

? ? ?/data/dockerfile/Dockerfile?

? ? FROM centos?

? ? ENV VER 9.9.4-74.el7_6.1?

? ? RUN yum install bind-$VER -y?

# 構(gòu)建鏡像:

[root@docker? dockerfile]#? docker build . -t stanleyws/bind:v9.9.4_with_env_run?

# 運行容器:

[root@docker? dockerfile]# docker run --rm stanleyws/bind:v9.9.4_with_env_run rpm -qa bind

bind-9.9.4-74.el7_6.1.x86_64

===========================================================

(4)CMD/ENTRYPOINT指令

## CMD和ENTRYPOINT指令作用相同陆馁,使用方法略有不同

1.CMD指令
/data/dockerfile/Dockerfile?

FROM centos?

RUN yum install httpd -y?

CMD ["httpd"找颓,"-D","FOREGROUND"]

構(gòu)建鏡像:

[root@docker? dockerfile]#? docker build . -t stanleyws/httpd:myhttpd

[root@docker? dockerfile]#? vi Dockerfile?

? FROM centos?

? RUN yum install httpd -y?

? CMD ["httpd","-D","FOREGROUND"]

[root@docker? dockerfile]# docker run -d --rm --name myhttpd -p83:88 oldboy1103/httpd:test?

2e12804350b12b0916fe

[root@docker? dockerfile]# docker ps -a?

2.ENTRYPOINT指令:

/data/dockerfile/Dockerfile?

FROM centos

ADD entrypoint.sh /entrypoint.sh?

RUN yum install epel-release -q -y && yum install nginx -y?

ENTRYPOINT /entrypoint.sh?

entrypoint.sh?

/data/dockerfile/entrypoinot.sh?

#!/bin/bash?

/sbin/nginx -g "daemon off;"

[root@docker? dockerfile]#? docker exec -ti compassionate_solomon /bin/bash?

[root@docker? dockerfile]#? vi dockerfile?

? FROM centos

? ADD entrypoint.sh /entrypoint.sh?

? RUN yum install epel-release -q -y && yum install nginx -y?

? ENTRYPOINT /entrypoint.sh?

? ?entrypoint.sh?

===========================================================

(5)綜合實驗:

? ? ? 運行一個docker容器叮贩,在瀏覽器打開demon.od.com能訪問到百度首頁

準備Docker 鏡像:

/data/dockerfile/nginx/Dockerfile?

FROM stanleyws/nginx:v1.12.2?

USER root?

ENV www /usr/share/zoneinfo/Asia/shanghai /etc/localtime &&\

echo 'Asia/Shanghai' >/etc/timezone?

WORKDIR $www?

ADD index.html? $www/index.html

ADD demo.od.com.conf $CONF /demo.od.com.conf?

EXPOSE 80?

CMD ["nginx","g","damon off;"]

index.html?

/data/dockerfile/nginx/index.html

[root@docker? dockerfile]#? wget www.baidu.com -O index.html?

[root@docker? dockerfile]#? vi demo.od.com.conf?

server {

listen 80;

server_name demo.od.com;

root /usr/share/nginx/html;

}

[root@docker? dockerfile]#? docker run --rm -P oldboy1103/nginx:baidu?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叮雳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妇汗,更是在濱河造成了極大的恐慌,老刑警劉巖说莫,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杨箭,死亡現(xiàn)場離奇詭異,居然都是意外死亡储狭,警方通過查閱死者的電腦和手機互婿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辽狈,“玉大人慈参,你說我怎么就攤上這事」蚊龋” “怎么了驮配?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長着茸。 經(jīng)常有香客問我壮锻,道長,這世上最難降的妖魔是什么涮阔? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任猜绣,我火速辦了婚禮,結(jié)果婚禮上敬特,老公的妹妹穿的比我還像新娘掰邢。我一直安慰自己牺陶,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布辣之。 她就那樣靜靜地躺著掰伸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪召烂。 梳的紋絲不亂的頭發(fā)上碱工,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音奏夫,去河邊找鬼怕篷。 笑死,一個胖子當著我的面吹牛酗昼,可吹牛的內(nèi)容都是我干的廊谓。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼麻削,長吁一口氣:“原來是場噩夢啊……” “哼蒸痹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呛哟,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤叠荠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扫责,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榛鼎,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年鳖孤,在試婚紗的時候發(fā)現(xiàn)自己被綠了者娱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡苏揣,死狀恐怖黄鳍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情平匈,我是刑警寧澤框沟,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站增炭,受9級特大地震影響街望,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弟跑,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一灾前、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孟辑,春花似錦哎甲、人聲如沸蔫敲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈嘿。三九已至,卻和暖如春吞加,著一層夾襖步出監(jiān)牢的瞬間裙犹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工衔憨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叶圃,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓践图,卻偏偏與公主長得像掺冠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子码党,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351