天天看點

Docker之Swam

一、前言

Docker簡介

Docker是一個開源的應用容器引擎,基于Go語言并遵從Apache2.0 協定開源。

Docker開源讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實作虛拟化。

容器是完全使用沙箱機制,互相之間不會有任何接口,更重要的容器性能開銷極低。

Swam簡介

Docker Swarm 是一個 Dockerized 化的分布式應用程式的本地叢集,它是在 Machine 所提供的功能的基礎上優化主機資源的使用率和容錯服務。具體來說,Docker Swarm 支援使用者建立可運作 Docker Daemon 的主機資源池,然後在資源池中運作 Docker 容器。Docker Swarm 可以管理工作負載并維護叢集狀态。

除了資源優化,Docker Swarm 可以保證應用的高可用性和容錯性。Docker Swarm 會不斷的檢查 Docker Daemon 所在主機的健康狀态。當某個主機不可用時,Swarm 就會将容器遷移到新的主機上。

Docker Swarm 的亮點之一是它可以在應用的生命周期内擴充,也就是說當應用從一個主機擴充到 2 個、20 個或者 200 個的時候,使用者可以保證接口的一緻性。

Swarm 的架構是可插拔的,系統已經包含一個預設的排程器。其它的廠商可以實作自己的排程器。

Docker之Swam

二、swam原理

swam叢集由管理節點(manager)和工作節點(work node)構成

  • manager:負責叢集的管理工作包括叢集配置、服務管理等所有跟叢集有關的工作。比如docker節點的上下線,容器的啟停。
  • node:主要負責營運相應的服務來執行任務(task)

三、搭建swam叢集

初始化swam叢集

 # 指定一個節點作為swam叢集的manager

 docker swam init --advertise_addr ip

檢視節點清單

 docker node ls

檢視swam叢集資訊

 docker info

檢視所有堆棧

 docker stack ls

删除服務

 docker stack rm

檢視所有服務

 docker service ps

檢視服務部署具體資訊

 # --pretty 格式化輸出

 docker service inspect --pretty 服務名稱