Docker三劍客簡介

docker.jpeg

compose阱当、machine 和 swarm 是docker 原生提供的三大編排工具。

Compose

1. 概述

在實(shí)際生產(chǎn)環(huán)境中韭畸,一個(gè)應(yīng)用往往由許多服務(wù)構(gòu)成白魂,而 docker 的最佳實(shí)踐是一個(gè)容器只運(yùn)行一個(gè)進(jìn)程,因此運(yùn)行多個(gè)微服務(wù)就要運(yùn)行多個(gè)容器槽片。多個(gè)容器協(xié)同工作需要一個(gè)有效的工具來管理他們何缓,定義這些容器如何相互關(guān)聯(lián)。compose 應(yīng)運(yùn)而生还栓。

compose 是用來定義和運(yùn)行一個(gè)或多個(gè)容器(通常都是多個(gè))運(yùn)行和應(yīng)用的工具碌廓。使用 compose 可以簡化容器鏡像的構(gòu)建以及容器的運(yùn)行。

compose 使用 YAML 文件來定義多容器之間的關(guān)系剩盒。一個(gè) docker-compose up 就可以把完整的應(yīng)用跑起來谷婆。 本質(zhì)上, compose 把 YAML 文件解析成 docker 命令的參數(shù)辽聊,然后調(diào)用相應(yīng)的 docker 命令行接口纪挎,從而將應(yīng)用以容器化的方式管理起來。它通過解析容器間的依賴關(guān)系順序地啟動(dòng)容器跟匆。而容器間的依賴關(guān)系由 YAML 文件中的 links 標(biāo)記指定异袄。

2. compose 配置簡介

Compose 是對(duì) docker 命令的封裝,默認(rèn)使用 docker-compose.yml 文件指定各個(gè)命令中的參數(shù)玛臂。
一個(gè)簡單的例子:

web:
  build: .
  ports:
  - 8080:80
  volumes:
  - . : /code
  links:
  - redis
redis:
  image: redis

這個(gè) YAML 文件定義了兩個(gè)服務(wù): Web 和 Redis烤蜕, 服務(wù)的名稱由用戶自定義。提供 Web 服務(wù)的鏡像從 Dockerfile 構(gòu)建迹冤; Web 服務(wù)監(jiān)聽80端口玖绿,并和主機(jī)的8080端口建立映射;主機(jī)的當(dāng)前目錄掛載到容器里的 /code 目錄上叁巨;Web 服務(wù)器通過鏈接 Redis 容器來訪問后臺(tái) Redis 數(shù)據(jù)庫斑匪。而 Redis 數(shù)據(jù)庫服務(wù)是通過運(yùn)行 Redis 鏡像來提供的。

在 docker-compose.yml 文件中锋勺,每個(gè)定義的服務(wù)都至少包含 buildimage 其中之一蚀瘸,其他命令都是可選的。 build 命令指定了包含 Dockerfile 的目錄庶橱,可以是相對(duì)目錄也可以是絕對(duì)目錄贮勃。

docker-compose.yml 文件中的 "ports" 標(biāo)記對(duì)應(yīng)于 docker run 的 "-p"選項(xiàng); "volumes"標(biāo)記對(duì)應(yīng) docker run 的 "-v" 選項(xiàng)苏章; "links" 標(biāo)記對(duì)應(yīng) docker run 的 "--links"選項(xiàng)寂嘉。

此外奏瞬,image 用于指定服務(wù)的鏡像。

最后泉孩,在 docker-compose.yml 所在的目錄下執(zhí)行 docker-compose up命令硼端,Web 和 Redis 服務(wù)都會(huì)成功運(yùn)行起來。

Machine

1. 概述

Docker Machine 是一個(gè)簡化Docker 安裝的命令行工具寓搬。通過一個(gè)簡單的命令行即可在相應(yīng)的平臺(tái)上安裝 Docker珍昨,為用戶提供了靈活的功能,使得用戶可以在任一主機(jī)上運(yùn)行 Docker 容器句喷。簡單說镣典,一個(gè) Docker Machine 就是一個(gè) Docker host 主機(jī)和經(jīng)過配置的 Docker client 的結(jié)合體。

技術(shù)上講唾琼, Machine 是一個(gè)框架兄春,比較開放。對(duì)于任何提供虛擬機(jī)服務(wù)的平臺(tái)锡溯,只要在這個(gè)框架下開發(fā)針對(duì)該平臺(tái)的驅(qū)動(dòng)赶舆,,Docker Machine 就可以集成到該平臺(tái)趾唱,在該平臺(tái)上執(zhí)行創(chuàng)建、刪除蜻懦、啟動(dòng)甜癞、停止等行為。

Docker Machine 的架構(gòu)如圖所示


Machine 架構(gòu).png

2. Machine 的基本概念和流程

Docker Machine 首先會(huì)創(chuàng)建一個(gè)虛擬機(jī)并在其上創(chuàng)建一個(gè) Docker host宛乃,然后使用Docker client 和 Docker host 通信悠咱,從而在 Docker host 上創(chuàng)建鏡像,啟動(dòng)容器征炼。

用 Docker Machine 創(chuàng)建虛擬機(jī)的時(shí)候需要制定相應(yīng)的驅(qū)動(dòng)析既,目前支持本機(jī)的驅(qū)動(dòng)有 VirtualBox 驅(qū)動(dòng)、VMware 驅(qū)動(dòng)及 Windows 下的 Hyper-V 驅(qū)動(dòng)谆奥。除此之外眼坏,Machine 還支持云主機(jī)的創(chuàng)建。只要開發(fā)了符合框架規(guī)范的驅(qū)動(dòng)酸些,Docker Machine 就可以支持相應(yīng)的平臺(tái)宰译。

Machine 創(chuàng)建的 Docker host 的IP地址是所創(chuàng)建的虛擬機(jī)的IP地址。
使用Docker Machine 及 VirtualBox 驅(qū)動(dòng)創(chuàng)建本地虛擬機(jī)并搭建 Docker host 的運(yùn)行流程如下:

  1. 執(zhí)行 docker-machine create --driver virtualbox dev命令魄懂。此命令首先創(chuàng)建用于 Docker client 和 Docker host 通信用的 CA 證書沿侈。 其次創(chuàng)建 VirtualBox 虛擬機(jī), 并配置用于通信的 TLS 參數(shù)及配置網(wǎng)絡(luò)市栗, 最后部署 Docker 的運(yùn)行環(huán)境 即 Docker host缀拭。

  2. 在 Docker client 里運(yùn)行 eval "$(docker-machine env dev)"命令咳短, 配置用于 Docker host 通信的環(huán)境變量。

  3. 使用 docker 相關(guān)命令創(chuàng)建或啟動(dòng)相應(yīng)的容器蛛淋。

Swarm

1. 概述

Swarm 是 Docker 社區(qū)提供的原生支持 Docker 集群的工具咙好。 它可以把多個(gè) Docker 主機(jī)組成的系統(tǒng)轉(zhuǎn)換成為單一的虛擬 Docker 主機(jī)。Swarm 對(duì)外提供兩種 API铣鹏。一種是標(biāo)準(zhǔn)的 Docker API敷扫,例如 Dokku、Compose诚卸、Krane葵第、Flynn、Deis合溺、Jenkins等卒密;另一種是 Swarm 的集群管理 API,用于集群的管理棠赛。

Swarm工具本身不是很成熟哮奇,不建議用在生產(chǎn)環(huán)境。
而 Google 開源的Kubernetes 是目前容器生態(tài)圈中最受歡迎的編排部署工具睛约。
Kubernetes 的架構(gòu)基于有多個(gè) Minion 節(jié)點(diǎn)的 Master 服務(wù)器鼎俘。關(guān)于 K8s我還沒有接觸到,后面學(xué)到后再總結(jié)在這里辩涝。



更新:
K8s 架構(gòu)框圖
K8s架構(gòu)框圖

組件解釋:

  • Master:主控服務(wù)器贸伐,運(yùn)行 kebernetes 的管理進(jìn)程,包括 API 服務(wù)怔揩、備份控制器和調(diào)度器等捉邢。
  • Minion: Kubelet 服務(wù)和 Docker 引擎的主機(jī), Minion 接受來自 Master 的指令
  • Kubelet:Kubernetes 節(jié)點(diǎn)層面的管理器商膊, 運(yùn)行在 Minion 上
  • Pod:多個(gè)容器的集合伏伐,并且這些容器運(yùn)行在同一個(gè) Minion 上。 Pod 是 K8s 的最小管理單元
  • Replication Controller:管理 Pod 的生命周期
  • Service:定義允許容器暴露出的服務(wù)和端口晕拆,以及通信交互的外部代理
  • Kubecfg:命令行接口藐翎,與 Master 交互,請(qǐng)求應(yīng)用業(yè)務(wù)的部署实幕、管理

參考:Docker 進(jìn)階與實(shí)戰(zhàn)

以上只是簡單對(duì) docker 編排工具的介紹阱高,要深入了解可以訪問各自的社區(qū)獲取最新信息及發(fā)展動(dòng)態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茬缩,一起剝皮案震驚了整個(gè)濱河市赤惊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凰锡,老刑警劉巖未舟,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圈暗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡裕膀,警方通過查閱死者的電腦和手機(jī)员串,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昼扛,“玉大人寸齐,你說我怎么就攤上這事〕常” “怎么了渺鹦?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蛹含。 經(jīng)常有香客問我毅厚,道長,這世上最難降的妖魔是什么浦箱? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任吸耿,我火速辦了婚禮,結(jié)果婚禮上酷窥,老公的妹妹穿的比我還像新娘咽安。我一直安慰自己,他們只是感情好蓬推,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布妆棒。 她就那樣靜靜地躺著,像睡著了一般拳氢。 火紅的嫁衣襯著肌膚如雪募逞。 梳的紋絲不亂的頭發(fā)上蛋铆,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天馋评,我揣著相機(jī)與錄音,去河邊找鬼刺啦。 笑死留特,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的玛瘸。 我是一名探鬼主播蜕青,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼糊渊!你這毒婦竟也來了右核?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤渺绒,失蹤者是張志新(化名)和其女友劉穎贺喝,沒想到半個(gè)月后菱鸥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躏鱼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年氮采,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片染苛。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹊漠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茶行,到底是詐尸還是另有隱情躯概,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布拢军,位于F島的核電站楞陷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茉唉。R本人自食惡果不足惜固蛾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望度陆。 院中可真熱鬧艾凯,春花似錦、人聲如沸懂傀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹬蚁。三九已至恃泪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間犀斋,已是汗流浹背贝乎。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叽粹,地道東北人览效。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像虫几,于是被迫代替她去往敵國和親锤灿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

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