Docker進階-資源管理Swarm+Portainer

小碼農薛堯發表於2019-08-21

Docker Swarm資源管理

Docker Swarm是Docker官方三劍客專案之一,提供Docker容器叢集服務,是Docker官方對容器雲生態進行支援的核心方案。

使用它,使用者可以將多個Docker主機封裝為單個大型的虛擬Docker主機,快速打造一套容器雲平臺。

注意:Docker1.12.0之後版本,Swarm模組已經內嵌入Docker引擎,成為Docker子命令docker swarm,絕大多使用者已經開始使用Swarm模組,Docker引擎API已經刪除Docker Swarm。

基本概念

Swarm是使用SwarmKit構建的Docker引擎內建(原生)的叢集管理和編排工具。使用Swarm叢集之前需要了解以下幾個概念。

節點

執行Docker的主機可以主動初始化一個Swarm叢集或者加入一個已存在的Swarm叢集,這樣執行Docker的主機就成為一個Swarm叢集的節點(node)。

節點分為管理(manager)節點和工作(worker)節點。

  • 管理節點用於Swarm叢集的管理,docker swarm集合基本只能在管理節點執行。
  • 工作節點是任務執行節點,管理節點將服務(service)下發至工作節點執行。

叢集中管理節點與工作節點的關係

Docker進階-資源管理Swarm+Portainer

服務和任務

任務(Task)是Swarm中的最小的排程單位,目前來說就是一個單一的容器。 服務(Services)是指一組任務的集合,服務定義了任務的屬性。

服務有兩種模式:

  • replicated services 按照一定規則在各個工作節點上執行指定個數的任務。
  • global services每個工作節點執行一個任務

兩個模式通過docker service create的--mode引數指定

容器、任務、服務的關係

Docker進階-資源管理Swarm+Portainer

建立Swarm叢集

瞭解Swarm叢集由管理節點和工作節點組成後,我們建立一個包含一個管理節點和兩個工作節點的最小Swarm叢集。

初始化叢集

使用docker swarm init在本地初始化一個Swarm叢集。

docker swarm init --advertise-addr 192.168.1.1
複製程式碼

如果你的Docker主機有多個網段,擁有多個IP,必須使用--advertise-addr指定IP。執行docker swarm init命令的節點自動成為管理節點。

注意:使用docker swarm init

Docker進階-資源管理Swarm+Portainer

增加工作節點

在另外兩臺伺服器上執行上一步建立管理節點時候的輸出的加入swarm叢集的全集

docker swarm join \
--token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx \ 
192.168.1.1:2377
複製程式碼

檢視叢集

在管理節點使用docker node ls檢視叢集。

docker node ls
複製程式碼

Docker進階-資源管理Swarm+Portainer

部署服務

使用docker service命令來管理Swarm叢集中的服務,該命令只能在管理節點執行。

新建服務

在建立好的Swarm叢集中執行nginx服務

docker service create --replicas 3 -p 80:80 --name nginx nginx:latest
複製程式碼

Docker進階-資源管理Swarm+Portainer

Docker進階-資源管理Swarm+Portainer

現在我們使用瀏覽器,輸入任意節點IP,即可看到nginx預設頁面。

Docker進階-資源管理Swarm+Portainer

檢視服務

檢視當前Swarm叢集執行的服務

docker service ls
複製程式碼

檢視某個服務的詳情

docker service ps nginx
複製程式碼

檢視某個服務的日誌

docker service logs nginx
複製程式碼

刪除服務

從Swarm叢集中移除某個服務

docker service rm nginx
複製程式碼

資源管理

前面利用Docker Swarm快速搭建一個最小叢集,也可以在叢集上部署服務,但是會發現swarm中並沒有提供統一入口檢視節點的資源使用情況。這時我們可以用圖形化管理工具Portainer幫我們管理swarm叢集。

Portainer是Docker的圖形化管理工具,提供狀態顯示皮膚、應用模板快速部署、容器映象網路資料卷的基本操作(包括上傳下載映象、建立容器等操作)、事件日誌顯示、容器控制檯操作、Swarm叢集和服務等集中管理和操作、登陸使用者管理和控制等功能。功能十分全面,基本能滿足小型單位對容器管理的全部需求。

Portainer叢集執行

下載Portainer映象

#查詢當前有哪些Portainer映象
docker search portainer
docker pull portainer/portainer
複製程式碼

安裝Portainer(管理節點)

docker run  -d -p 9000:9000 \
--name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer
複製程式碼

Docker進階-資源管理Swarm+Portainer

Portainer配置

設定管理員帳號密碼

Docker進階-資源管理Swarm+Portainer

Portainer介面內容

Docker進階-資源管理Swarm+Portainer

Docker進階-資源管理Swarm+Portainer

關注【小碼農薛堯】,瞭解更多資訊

相關文章