docker容器技術(shù)學習筆記(1合愈、容器基礎(chǔ))

一、鳥瞰容器生態(tài)系統(tǒng)

Docker 現(xiàn)在幾乎是容器的代名詞击狮。確實佛析,是 Docker 將容器技術(shù)發(fā)揚光大。同時彪蓬,大家也需要知道圍繞 Docker 還有一個生態(tài)系統(tǒng)寸莫。Docker 是這個生態(tài)系統(tǒng)的基石,但完善的生態(tài)系統(tǒng)才是保障 Docker 以及容器技術(shù)能夠真正健康發(fā)展的決定因素档冬。下面一圖大致列出了整個容器生態(tài)圈及其簡單介紹:

容器生態(tài)系統(tǒng)一覽

二膘茎、Docker核心組件

  • Docker 客戶端 - Client
  • Docker 服務(wù)器 - Docker daemon
  • Docker 鏡像 - Image
  • Registry
  • Docker 容器 - Container

Docker 架構(gòu)如下圖所示:

Docker架構(gòu)圖

Docker 采用的是 Client/Server 架構(gòu)】崾模客戶端向服務(wù)器發(fā)送請求披坏,服務(wù)器負責構(gòu)建、運行和分發(fā)容器呛牲」蚊龋客戶端和服務(wù)器可以運行在同一個 Host 上,客戶端也可以通過 socket 或 REST API 與遠程的服務(wù)器通信娘扩。

2.1 DockerFile最常用的指令

  • FROM
    指定 base 鏡像着茸。

  • MAINTAINER
    設(shè)置鏡像的作者,可以是任意字符串琐旁。

  • COPY
    將文件從 build context 復(fù)制到鏡像涮阔。
    COPY 支持兩種形式:
    1、COPY src dest
    2灰殴、COPY ["src", "dest"]
    注意:src 只能指定 build context 中的文件或目錄敬特。

  • ADD
    與 COPY 類似,從 build context 復(fù)制文件到鏡像。不同的是伟阔,如果 src 是歸檔文件(tar, zip, tgz, xz 等)辣之,文件會被自動解壓到 dest。

  • ENV
    設(shè)置環(huán)境變量皱炉,環(huán)境變量可被后面的指令使用怀估。例如:

ENV MY_VERSION 1.3
RUN apt-get install -y mypackage=$MY_VERSION
  • EXPOSE
    指定容器中的進程會監(jiān)聽某個端口,Docker 可以將該端口暴露出來合搅。

  • VOLUME
    將文件或目錄聲明為 volume多搀。

  • WORKDIR
    為后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令設(shè)置鏡像中的當前工作目錄。

  • RUN
    在容器中運行指定的命令灾部。

  • CMD
    容器啟動時運行指定的命令康铭。
    Dockerfile 中可以有多個 CMD 指令,但只有最后一個生效赌髓。CMD 可以被 docker run 之后的參數(shù)替換从藤。

  • ENTRYPOINT
    設(shè)置容器啟動時運行的命令。
    Dockerfile 中可以有多個 ENTRYPOINT 指令锁蠕,但只有最后一個生效呛哟。CMD 或 docker run 之后的參數(shù)會被當做參數(shù)傳遞給 ENTRYPOINT。

  • RUN vs CMD vs ENTRYPOINT
    1匿沛、RUN 執(zhí)行命令并創(chuàng)建新的鏡像層,RUN 經(jīng)常用于安裝軟件包榛鼎。
    2逃呼、CMD 設(shè)置容器啟動后默認執(zhí)行的命令及其參數(shù),但 CMD 能夠被 docker run 后面跟的命令行參數(shù)替換者娱。
    3抡笼、ENTRYPOINT 配置容器啟動時運行的命令。
    我們可用兩種方式指定 RUN黄鳍、CMD 和 ENTRYPOINT 要運行的命令:Shell 格式和 Exec 格式推姻,二者在使用上有細微的區(qū)別。

Shell 格式
<instruction> <command>

Exec 格式
<instruction> ["executable", "param1", "param2", ...]

CMD 和 ENTRYPOINT 推薦使用 Exec 格式框沟,因為指令可讀性更強藏古,更容易理解。RUN 則兩種格式都可以忍燥。

最佳實踐
1拧晕、使用 RUN 指令安裝應(yīng)用和軟件包,構(gòu)建鏡像梅垄。
2厂捞、如果 Docker 鏡像的用途是運行應(yīng)用程序或服務(wù),比如運行一個 MySQL,應(yīng)該優(yōu)先使用 Exec 格式的 ENTRYPOINT 指令靡馁。CMD 可為 ENTRYPOINT 提供額外的默認參數(shù)欲鹏,同時可利用 docker run 命令行替換默認參數(shù)。
3臭墨、如果想為容器設(shè)置默認的啟動命令赔嚎,可使用 CMD 指令。用戶可在 docker run 命令行中替換此默認命令裙犹。

2.2 Docker 鏡像 - Image

  • base 鏡像提供的是最小安裝的 Linux 發(fā)行版尽狠。base 鏡像只是在用戶空間與發(fā)行版一致,kernel 版本與發(fā)行版是不同的叶圃;容器只能使用 Host 的 kernel袄膏,并且不能修改。

  • 使用tag給鏡像命名:假設(shè)我們現(xiàn)在發(fā)布了一個鏡像 myimage掺冠,版本為 v1.9.1沉馆。那么我們可以給鏡像打上四個 tag:1.9.1、1.9德崭、1 和 latest斥黑。

docker tag myimage-v1.9.1 myimage:1
docker tag myimage-v1.9.1 myimage:1.9
docker tag myimage-v1.9.1 myimage:1.9.1
docker tag myimage-v1.9.1 myimage:latest

效果:
myimage:1 始終指向 1 這個分支中最新的鏡像。
myimage:1.9 始終指向 1.9.x 中最新的鏡像眉厨。
myimage:latest 始終指向所有版本中最新的鏡像锌奴。
如果想使用特定版本,可以選擇 myimage:1.9.1憾股、myimage:1.9.2 或 myimage:2.0.0鹿蜀。
  • 當容器啟動時,一個新的可寫層被加載到鏡像的頂部服球。這一層通常被稱作“容器層”茴恰,“容器層”之下的都叫“鏡像層”。只有容器層是可寫的斩熊,容器層下面的所有鏡像層都是只讀的往枣。


  • 鏡像的常用操作:

images    顯示鏡像列表
history   顯示鏡像構(gòu)建歷史
commit    從容器創(chuàng)建新鏡像
build     從 Dockerfile 構(gòu)建鏡像
tag       給鏡像打 tag
pull      從 registry 下載鏡像
push      將 鏡像 上傳到 registry
rmi       刪除 Docker host 中的鏡像
search    搜索 Docker Hub 中的鏡像
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市粉渠,隨后出現(xiàn)的幾起案子分冈,更是在濱河造成了極大的恐慌,老刑警劉巖渣叛,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丈秩,死亡現(xiàn)場離奇詭異,居然都是意外死亡淳衙,警方通過查閱死者的電腦和手機蘑秽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門饺著,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肠牲,你說我怎么就攤上這事幼衰。” “怎么了缀雳?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵渡嚣,是天一觀的道長。 經(jīng)常有香客問我肥印,道長识椰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任深碱,我火速辦了婚禮腹鹉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敷硅。我一直安慰自己功咒,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布绞蹦。 她就那樣靜靜地躺著力奋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幽七。 梳的紋絲不亂的頭發(fā)上景殷,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音澡屡,去河邊找鬼滨彻。 笑死,一個胖子當著我的面吹牛挪蹭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播休偶,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梁厉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踏兜?” 一聲冷哼從身側(cè)響起词顾,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碱妆,沒想到半個月后肉盹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡疹尾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年上忍,在試婚紗的時候發(fā)現(xiàn)自己被綠了骤肛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡窍蓝,死狀恐怖腋颠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吓笙,我是刑警寧澤淑玫,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站面睛,受9級特大地震影響絮蒿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叁鉴,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一土涝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亲茅,春花似錦回铛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袭祟,卻和暖如春验残,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巾乳。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工您没, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胆绊。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓氨鹏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親压状。 傳聞我的和親對象是個殘疾皇子仆抵,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

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