1. 程式人生 > >Docker Swarm資源管理

Docker Swarm資源管理

  • Docker Swarm是docker官方三劍客專案之一,提供docker容器叢集服務,是docker官方對容器雲生態進行支援 的核心方案。使用它,使用者可以將多個docker主機封裝為單個大型的虛擬docker主機,快速打造一套容器雲平臺。

  • 注意:docker 1.12.0+Swarm mode已經內嵌入docker引擎,成為了docker子命令docker swarm,絕大多數使用者已經開始使用swarm mode,docker引擎API已經刪除Docker Swarm。

  • 基本概念

    • Swarm是使用SwarmKit構建的docker引擎內建(原生)的叢集管理和編排工具。使用Swarm叢集執勤啊需要了解如下幾個概念:

    • 節點

      • 執行docker的主機可以主動初始化一個swarm叢集或者加入一個已存在的swarm叢集,這樣這個執行docker的主機就稱為一個swarm叢集的節點。

      • 節點分為管理節點和工作節點。管理節點用於swarm叢集的管理,docker swarm命令基本只能在管理節點執行。工作節點是任務執行節點,管理節點將服務下發至工作節點執行。

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

    • 服務和任務

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

      • 服務有兩種模式:

        • replicated services:按照一定規則在各個工作節點上執行指定個數的任務;
        • global services:每個工作節點上執行一個任務。
      • 兩種模式通過docker service create--mode引數指定。

      • 容器、任務、服務的關係:

  • 建立swarm叢集

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

    • 初始化叢集

      • 使用docker swarm init在本機初始化一個swarm叢集

        docker swarm init --advertise-addr 192.168.100.249
        

        如果你的docker主機有多個網絡卡,擁有多個IP,必須使用--advertise-addr

        指定IP。

        執行docker swarm init命令的節點自動成為管理節點。

    • 增加工作節點

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

        docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c 192.168.100.24:2377
        
    • 檢視叢集

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

        docker node ls
        
  • 部署服務

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

    • 新建服務

      • 在建立好的swarm叢集中執行一個名為nginx的服務。

        docker service create --replicas 3 -p 80:80 --name nginx nginx:latest
        

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

    • 檢視服務

      • 使用docker service ls來檢視當前swarm叢集執行的服務

        docker service ls
        

        使用docker service ps來檢視某個服務的詳情

        docker service ps nginx
        

        使用docker service logs來檢視某個服務的日誌

        docker service logs nginx
        
    • 刪除服務

      • 使用docker service rm來從swarm叢集移除某個服務

        docker service rm nginx
        
  • 資源管理

    • 前面我們學過了利用docker swarm快速搭建一個最小叢集,也可以在叢集上部署服務,但是會發現swarm中並沒有提供統一入口檢視節點的資源使用情況。這個時候我們急切的希望有一個圖形化管理工具來幫我們管理swarm叢集,portainer就是這樣的一個工具。

    • 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
        
    • portainer配置