docker swarm

 

  Swarm是Docker公司推出的用來管理docker集羣,它將一羣Docker宿主機變成一個單一的,虛擬的主機。Swarm使用標準的Docker API接口做爲其前端訪問入口,換言之,各類形式的Docker Client(docker client in Go, docker_py, docker等)都可以直接與Swarm通訊。Swarm幾乎所有用go語言來完成開發,Swarm0.2發佈,相比0.1版本,0.2版本增長了一個新的策略來調度集羣中的容器,使得在可用的節點上傳播它們,以及支持更多的Docker命令以及集羣驅動。前端

  Swarm deamon只是一個調度器(Scheduler)加路由器(router),Swarm本身不運行容器,它只是接受docker客戶端發送過來的請求,調度適合的節點來運行容器,這意味着,即便Swarm因爲某些緣由掛掉了,集羣中的節點也會照常運行,當Swarm從新恢復運行以後,它會收集重建集羣信息.node

1.swarm 初始化(建立集羣)nginx

docker swarm init --advertise-addr x.x.x.x(ip地址)

之前作過的話可能會報須要先離開集羣redis

執行docker swarm leave 最好是加上--force 參數docker

執行成功後再次初始化集羣bash

  

如圖所示,就是初始化集羣成功,在其餘機器上執行圖中畫紅線的就能夠加入集羣服務器

注意:docker集羣用到 2377端口(集羣管理端口),7946(這兩個是須要開啓tcp和udp) ,4789網絡

建立成功後每一個節點都會有個overlay 的網絡配置,該配置是用來節點之間的通信的,如圖所示tcp

 在每一個機器上查看網絡 docker network  inspect ingress 能夠看到集羣內部通信地址,可是ping不通, 建議仍是用服務器ip來做爲其餘服務(如redis集羣)的通信地址,spa

 

將節點升級爲manager:  docker node  promote 結點名 
將節點降級爲worker:  docker node  demote 結點名

 

2.建立服務(如nginx)

  

docker service create --replicas 5  -p 8080:80 --name nginx  nginx

  --replicas建立幾個服務   最後一個nginx爲鏡像名若是有本地的使用本地的,沒有可使用公共的鏡像

  執行成功後會均勻的分配到集羣中(有先分配到工做節點上,最後纔會分配到leader節點上)

docker service scale nginx=0

  其中的0若是大於如今配置的服務數就是至關於擴容到幾臺服務,若是小於如今的服務數就至關於減少到對應的服務數,(當手動減少後,只會移除掉管理權限,再次擴容的時候對原先減掉的服務沒有影響,經過此命令減小的,會將次服務刪除)

注意全部的存儲數據或須要持久化的數據不能放到服務內部(也就是容器內部),不然當容器刪除(或者服務減小的時候該容器上的數據也會一併消失)

  刪除服務  

docker service rm nginx

 

  查看全部服務

docker service ls

  查看服務的容器狀態

 

docker service ps nginx 

 

  查看服務的詳細信息

 

docker service inspect nginx
相關文章
相關標籤/搜索