在以前的文章中咱們介紹了不少docker相關的基礎概念,咱們瞭解瞭如何將一個應用程序build爲一個鏡像,並經過該鏡像建立一個容器實例,使得咱們的應用程序能夠在容器中運行;同時經過學習docker compose,瞭解瞭如何經過docker compose來管理一組服務;以及經過學習docker swarm瞭解瞭如何管理docker容器集羣。在咱們的實際開發過程當中,開發環境若是咱們也弄多個vm server來搭建集羣並部署服務的話,這無疑會給咱們的開發帶來很大的不便,本篇文章就爲你們介紹一下如何在單主機server上實現多docker虛擬主機的建立和服務部署(一樣適用於多sever的docker集羣管理和服務部署)。node
在以前的Docker Swarm Mode簡介中咱們介紹了docker集羣,node以及docker swarm模式,swarm由多個節點組成,能夠是物理節點,也能夠是虛擬節點,咱們能夠在其中一個節點中經過運行docker swarm init
以啓用swarm mode模式,並使當前的節點成爲一個集羣管理器,而後在其餘節點上運行docker swarm join, 讓他們做爲worker加入到集羣中。本章咱們在一臺Windows 10操做系統的機器上建立出兩個虛擬vm,而後將這兩個虛擬vm轉換爲一個集羣。首先須要瞭解一下Docker Machine。docker
docker machine是docker三劍客之一,除了docker machine以外還有以前咱們已經介紹過的docekr compose和docker swarm。經過docker machine咱們能夠在主機上快速建立包含docker環境的虛擬機。docker machine的安裝已經被集成到了docker 的安裝過程當中,咱們無需單獨安裝。咱們能夠經過docker-machine version
指令查看當前機器上的版本信息。如圖所示:app
在Windows 10 系統中咱們使用hyperv驅動來建立Docker Machine。在建立Docker Machine以前,必須事先在Hyper-v管理器中新建一個外部虛擬交換機,以便在建立docker machine的時候執行虛擬交換機的名稱。
ssh
1. 運行Hyper-v管理器,如圖所示:post
2. 點擊右側的Virtual Switch Manager,彈出如圖所示的dialog:學習
3. 選擇External的virtual switch並點擊Create Virtual Switch按鈕,如圖所示:ui
4. 輸入Virtual Switch的名稱,並勾選中Allow management operating system to share this network adapter, 如圖所示:this
5. 點擊apply button,並點擊ok button,這樣咱們就建立好了一個virtual switch操作系統
有了virtual switch以後,咱們須要經過docker-machine create指令來建立兩個包含docker環境的虛擬機,做爲咱們集羣中的兩個節點,具體指令以下所示:命令行
docker-machine create -d hyperv --hyperv-virtual-switch DockerVS vm1
docker-machine create -d hyperv --hyperv-virtual-switch DockerVS workervm1
經過上述指令咱們建立了兩個包含docker環境的vm,分別爲vm1和workervm1,咱們能夠經過指令docker-machine ls
來查看當前主機所建立的vm信息,如圖所示:
建立好vm以後,咱們來開始搭建包含兩臺vm的docker swarm,關於docker swarm的相關知識咱們已經在 (Docker Swarm Mode簡介)中進行了介紹,這裏咱們就不進行過多的介紹了,直接動手操做。首先咱們經過docker-machine ssh vm1
指令將當前命令行切入到指定的vm1中,如圖所示:
執行docker swarm init
指令初始化docker swarm,同時將vm1做爲swarm manager,如圖所示:
在命令的執行結果中咱們能夠看到:to add a worker to this swarm, run the following command,咱們以一樣的方式進入到workervm1中,而後執行指令:
docker swarm join --token tokenstr manageripaddr:2377
如圖所示:
從提示中咱們能夠看到workervm1已經做爲worker節點加入到了swarm中。咱們經過docker-machine ssh vm1
指令進入到vm1中,而後執行docker-machine node ls
指令查看當前swarm中的節點信息,如圖所示:
經過以上這些操做咱們便在一臺主機上搭建出了包含2臺vm的docker集羣。
注意:Swarm管理節點是swarm中能夠執行命令或受權其餘機器加入swarm做爲工做節點的惟一機器。工做節點僅用於提供功能,而且無權告知任何其餘機器它能夠作什麼 和不能作什麼。
接下來就是向集羣中部署服務,須要注意的是在部署服務以前,咱們須要將主機中的docker-compose.yml文件經過指令
docker-machine scp docker-compose.yml vm1:~
copy到集羣的管理機器vm1中,接下來服務部署的部分你們能夠參照Docker Swarm Mode簡介中的 「向集羣中部署服務「的章節。
注意:最後站點的訪問地址爲http://(vm1 ip or workervm1 ip):port
但願以上講解能讓你們對Docker有更深刻的瞭解和學習。