Docker Swarm資源管理

  • Docker Swarm是docker官方三劍客項目之一,提供docker容器集羣服務,是docker官方對容器雲生態進行支持 的核心方案。使用它,用戶能夠將多個docker主機封裝爲單個大型的虛擬docker主機,快速打造一套容器雲平臺。node

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

  • 基本概念docker

    • Swarm是使用SwarmKit構建的docker引擎內置(原生)的集羣管理和編排工具。使用Swarm集羣執勤啊須要瞭解以下幾個概念:瀏覽器

    • 節點服務器

      • 運行docker的主機能夠主動初始化一個swarm集羣或者加入一個已存在的swarm集羣,這樣這個運行docker的主機就稱爲一個swarm集羣的節點。網絡

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

      • 集羣中管理節點與工做節點的關係:3d

    • 服務和任務rest

      • 任務(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配置

相關文章
相關標籤/搜索