docker中的三劍客是指什么

docker中的三劍客是指swarm、compose和machine。compose是用來定義和運(yùn)行一個(gè)或多個(gè)容器運(yùn)行和應(yīng)用的工具;Machine是一個(gè)簡(jiǎn)化Docker安裝的命令行工具;Swarm是社區(qū)提供的原生支持Docker集群的工具。

docker中的三劍客是指什么

本教程操作環(huán)境:linux5.9.8系統(tǒng)、docker-1.13.1版、Dell G3電腦。

docker容器中的三劍客是swarm、compose和machine。

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 可以簡(jiǎn)化容器鏡像的構(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 配置簡(jiǎn)介

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

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ù)庫(kù)。而 Redis 數(shù)據(jù)庫(kù)服務(wù)是通過運(yùn)行 Redis 鏡像來提供的。

在 docker-compose.yml 文件中,每個(gè)定義的服務(wù)都至少包含 build或image 其中之一,其他命令都是可選的。 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è)簡(jiǎn)化Docker 安裝的命令行工具。通過一個(gè)簡(jiǎn)單的命令行即可在相應(yīng)的平臺(tái)上安裝 Docker,為用戶提供了靈活的功能,使得用戶可以在任一主機(jī)上運(yùn)行 Docker 容器。簡(jiǎn)單說,一個(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)如圖所示

docker中的三劍客是指什么

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)行流程如下:

  • 執(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。

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

  • 使用 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)框圖

docker中的三劍客是指什么

組件解釋:

  • 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ù)的部署、管理

推薦學(xué)習(xí):《docker視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享