在介紹Swarm以前咱們要說一下什麼Docker三劍客?node
Swarm翻譯中文的意思是蜂羣的意思。你們都知道蜂羣是很不少多蜜蜂在一塊兒。裏面有蜂王和工蜂,各司其職。那麼在咱們技術界把許許多多的Docker組織在一塊兒,這樣就是Docker集羣。Swarm就是管理這些Docker的工具。同蜂羣同樣。也有蜂王(Master節點)工蜂(Node節點)各司其職。蜂王能調度和指揮全部的工蜂來完成各類任務。實現整個蜂羣的正常運轉。nginx
由於在生產環境中使用單個Docker節點是遠遠不夠的,搭建Docker集羣勢在必行。 這樣能保證咱們的服務能夠作到不怠機。長時間穩定的運轉下去。雖然Docker集羣管理工具不少,有比較有名的Kubernetes和Mesos。可是咱們爲何要選擇Swarm呢?。首先對於一個剛剛入門和接觸Docker的人來講。最好的學習資料是官方文檔。Swarm是原生的,同時也是最簡單,最易學,最節省資源的Docker集羣管理工具。因此我相信Swarm不會讓我失望的。git
因爲咱們等會要使用Machine來建立節點。因此介紹Machine的基本使用。github
#因爲MacOs在安裝docker的時候。已經默認安裝Machine.這裏根據官網給出的Linux安裝命令 sudo curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine #添加權限 sudo chmod +x /usr/local/bin/docker-machine #查看當前Machine版本 docker-machine -v #安裝MacOs虛擬機xhyve驅動。也能夠跳過 brew install docker-machine-driver-xhyve
使用Machine建立4個虛擬機docker
#create命令後面能夠添加自定義參數.能夠經過docker-machine create --driver virtualbox --help查看 #建立Master節點.這裏dm由於我使用自定義命令。等同於docker-machine dm create Master #能夠經過ls命令查看當前虛擬機.而後咱們分別創建3個node節點,node1,node2,node3 dm create Node1 dm create Node2 dm create Node3 #建立而後經過ls查看 dm ls ###################### NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS Master - virtualbox Running tcp://192.168.99.100:2376 v18.03.0-ce Node1 - virtualbox Running tcp://192.168.99.102:2376 v18.03.0-ce Node2 - virtualbox Running tcp://192.168.99.103:2376 v18.03.0-ce Node3 - virtualbox Running tcp://192.168.99.103:2376 v18.03.0-ce
到此4臺虛擬機已經建立完畢。下面開始使用Swarm搭建一個集羣。ssh
首先咱們須要登陸到Master這臺虛擬機。建立初始化一個集羣。curl
#登陸到Master dm ssh Master #初始化集羣。注意這裏因爲是虛擬機。有多個ip。全部必須制定ip.不然會報錯. docker swarm init --advertise-addr 192.168.99.100 #這裏會提示建立manager成功。若是要加入worker。只須要在別的主機裏面輸入它已經生成的號的命令輸入就能夠了。 docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377 #登入Node1 dm ssh Node1 #輸入上面命令。Node2和Node3操做同樣 docker swarm join --token SWMTKN-1-03e4mo13jpizh15kroub1qsxdxk6zj8qgu2y3acwi1v14zaqpe-e6hhlamgqa9m7w4601biqqtg9 192.168.99.100:2377 #登陸Master,查看狀態 dm ssh Master #查看集羣 docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 0vol8fdjksmabvmgx0x60ncyd * Master Ready Active Leader 18.03.0-ce jnuun47ezvi0bl1iz1ccxmgto Node1 Ready Active 18.03.0-ce ye6ghynu19tvdkf51kof13w6y Node2 Ready Active 18.03.0-ce x84fqdefi4461gf087qcb9nmt Node3 Ready Active 18.03.0-ce
這裏會看到4臺虛擬機。其中Master臺是Leader (就是咱們的蜂王),剩下的3臺就是咱們的worker(工蜂)到這裏咱們一個簡單的小集羣就搭建完畢了。tcp
咱們已經搭建好了集羣。可是要怎麼樣經過Master管理咱們的worker節點呢?
首先咱們須要登陸到Master這臺虛擬機。而後經過這個臺虛擬機來控制3個worker節點分佈式
#登陸Master dm ssh Master #運行服務。 docker service create --replicas 4 -p 80:80 --name nginx nginx #查看集羣運行的服務 service ps nginx
這個時候4個虛擬機已經所有安裝了nginx這個服務。咱們打開任意一個節點的ip打開就能夠看到熟悉的"Welcome to nginx!"的頁面了。到此整個教程結束。工具