Docker Swarm(十)Portainer 集群可視化管理


 

前言

搭建好我們的容器編排集群,那我們總不能日常的時候也在命令行進行操作,所以我們需要使用到一些可視化的工具,Docker圖形化管理提供了很多工具,有PortainerDocker UIShipyard等等,本文主要介紹Portainer

Portainer是一個開源、輕量級Docker管理用戶界面,基於Docker API,提供狀態顯示面板、應用模板快速部署、容器鏡像網絡數據卷的基本操作(包括上傳下載鏡像,創建容器等操作)、事件日志顯示、容器控制台操作、

Swarm集群和服務等集中管理和操作、登錄用戶管理和控制等功能。功能十分全面,基本能滿足中小型單位對容器管理的全部需求。

 

 

單機運行

如果僅有一個docker宿主機,則可使用單機版運行,Portainer單機版運行十分簡單,只需要一條語句即可啟動容器,來管理該機器上的docker鏡像、容器等數據。

  • 下載鏡像

docker pull portainer/portainer
  • 創建數據卷

docker volume create portainer_data
  • 運行容器

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

參數說明:

-d:容器在后台運行;

-p 9000:9000 :宿主機9000端口映射容器中的9000端口

-v /var/run/docker.sock:/var/run/docker.sock :把宿主機的Docker守護進程(Docker daemon)默認監聽的Unix域套接字掛載到容器中;

-v portainer_data:/data :把宿主機portainer_data數據卷掛載到容器/data目錄;

  • 查看容器進程

docker ps -l
CONTAINER ID        IMAGE                COMMAND            CREATED            STATUS              PORTS                    NAMES
439cc8a6d44a        portainer/portainer  "/portainer"        13 seconds ago      Up 13 seconds      0.0.0.0:9000->9000/tcp  amazing_clarke
  • 訪問服務

訪問方式:http://IP:9000 ,首次登錄需要注冊用戶,給用戶admin設置密碼,如下圖:

單機版本選擇“Local",點擊Connect即可連接到本地docker,如下圖:

 

 

集群運行

更多的情況下,我們會有一個docker集群,可能有幾台機器,也可能有幾十台機器,因此,進行集群管理就十分重要了,Portainer也支持集群管理,Portainer可以和Swarm一起來進行集群管理操作。

在管理節點執行以下操作:

  • 下載鏡像

docker pull portainer/portainer
  • 創建數據卷

docker volume create portainer_data
  • 創建網絡

docker network create --driver overlay --attachable portainer_agent_network
  • 創建portainer代理

docker service create \
    --name portainer_agent \
    --network portainer_agent_network \
    --mode global \
    --constraint 'node.platform.os == linux' \
    --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
    --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \
    portainer/agent
  • 創建portainer服務

docker service create \
--name portainer \
--network portainer_agent_network \
--publish 9000:9000 \
--replicas=1 \
--constraint 'node.role==manager' \
--constraint node.hostname==manager-node \
--container-label com.docker.stack.namespace=portainer \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=volume,src=portainer_data,dst=/data \
portainer
/portainer \
-H unix:///var/run/docker.sock

參數說明:

-publish 9000:9000 :宿主機9000端口映射容器中的9000端口

-mount type=bind /var/run/docker.sock:/var/run/docker.sock :把宿主機的Docker守護進程(Docker daemon)默認監聽的Unix域套接字掛載到容器中;

-mount type=volume portainer_data:/data :把宿主機portainer_data數據卷掛載到容器/data目錄;

--constraint node.role==manager 指定容器運行在管理節點上.

--constraint node.hostname==manager-node 指定容器運行在管理節點manager-node上.

--container-label com.docker.stack.namespace=portainer 是為了prometheus+grafana能通過stack標簽查看監控數據,建議今后不以stack方式部署的服務都加上com.docker.stack.namespace標簽。

  • 訪問服務

訪問方式:http://IP:9000 ,首次登錄需要注冊用戶,給用戶admin設置密碼,如下圖:

我們進入之后可以看到這個一個界面:

  • 儀表盤和Swarm

儀表盤展示了Swarm集群的信息:

注意CPU 處為4、總內存為16.4 GB,集群內的每個節點有2個CPU且內存為8.2 GB,所以這些值為集群的總和。

點擊 cluster vizualizer會進入Swarm頁面, 這里有一個集群的視覺總覽,唯一運行的服務是當前的Portainer:

 

 點擊名稱列的cluster會進入一個服務的總覽頁面。可以看到,有很多服務相關的信息:

可以對服務進行實時的修改,包括位置約束、重啟策略、添加服務標簽等等。

找到 Resource limits and reservations 的位置,可以修改服務資源限制:

在頁面的最底部是與服務關聯的任務列表:

 可以看到,我們有2個運行中的任務,2個節點上各有1個。點擊左側菜單中的Containers會顯示一些你可能沒預料到的信息:

只列出了1個容器,正常應該是有2個才對。為什么呢?

我們學習了docker container命令實際上僅在運行它們的節點上進行了應用,因為Portainer是在和manager進行對話,那是docker container命令所唯一進行運行的節點。記住Portainer只是Docker API的一個網頁界面,因此它與命令行中運行 docker container ls的結果相同。

  • 添加端點(endpoint)

但是我們可以將剩下的兩個集群節點加到Portainer中。要進行添加,點擊左側菜單的Endpoint項。

 然后點擊+ Add endpoint按鍵,點擊Home會帶你進入本章這部分開頭處所見到的Endpoint總覽頁面。從下面的截圖中可以看到,worker節點分別運行了三個容器,並且它們 被標記為單機版而非 Swarm:

這時選擇新的swarm cluster下左側菜單中的的continers就會顯示所有節點上的容器了:

  • 添加私有倉庫(registry)

 

 

 

擴展閱讀

有關Portainer的更多信息參見:

  • 官網:https://portainer.io/
  • Portainter的GitHub地址:https://github.com/portainer/
  • 最新文檔:https://portainer.readthedocs.io/en/latest/index.html
  • 模板文檔:http://portainer.readthedocs.io/en/latest/templates.html
  • Portainter Agent:https://portainer.readthedocs.io/en/stable/agent.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM