Docker-視覺化管理工具總結-推薦使用Portainer

DevOps在路上發表於2022-03-06

對於初學docker的小白,一款好的視覺化工具有助於快速掌握docker基本形態和概念,下面針對docker視覺化工具做些總結

ui-for-docker

UI For Docker是一個使用Docker Remote API的web介面,目的是提供一個簡潔純淨的客戶端實現,為了連線和管理Docker; 該工具目前已經無人維護,建議使用下面介紹的portainer

docker run -it -d --name docker-web --restart always -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock docker.io/uifd/ui-for-docker
image.png
1.優點
# 支援容器管理
# 支援映象管理
# 基於docker api,自身也是一個容器。
# 穩定性高
# 可動態顯示顯示容器之間關係圖
# 容器管理,增加埠對映,增加系統變數、對映目錄等
2.缺點
# 沒有登入驗證,因為沒有登入體系,目前解決辦法是,只開放本地訪問,或者通過TLS來對許可權進行控制。
# 無法分配某容器給某使用者。
# 不支援多主機。
# 不支援叢集swarm等
# 功能少
# 不支援控制檯命令


Portainer

https://www.portainer.io/installation/
是一款Docker視覺化管理工具,可讓您輕鬆構建和管理 Docker、Docker Swarm、Kubernetes 和 Azure ACI 中的容器。
Portainer 將管理容器的複雜性隱藏在易於使用的 UI 後面。通過消除使用 CLI、編寫 YAML 或理解清單的需要,Portainer 使部署應用程式和解決問題變得如此簡單,任何人都可以做到
image.png

Portainer-架構

Portainer 由兩個元素組成:Portainer 伺服器和 Portainer 代理。兩者都在您現有的容器化基礎設施上作為輕量級容器執行。Portainer 代理應該部署到叢集中的每個節點,並配置為向 Portainer 伺服器容器報告。
單個 Portainer 伺服器將接受來自任意數量的 Portainer 代理的連線,從而提供從一個集中式介面管理多個叢集的能力。為此,Portainer Server 容器需要資料永續性。Portainer 代理是無狀態的,資料被傳送回 Portainer 伺服器容器。
image.png


Portainer-安裝

執行下面兩條命令即可。這些命令會建立一個Portainer專用的卷,然後在8000和9000埠建立容器並執行。

  1. 基於本地容器的部署

如果使用Portainer管理本地Docker主機的話,需要繫結/var/run/docker.sock(這裡是個知識點,涉及docker 之間通訊的問題,以及docker 裡執行docker )

$ docker run --name portainer  --restart always -d -p 8000:8000 -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

然後在瀏覽器開啟對應地址,就會發現成功執行了。第一次執行的時候需要設定賬號,然後選擇要管理的Docker主機。
image.png

注意:portainer/portainer 是 Portainer v1.24.x 的映象名,現在已棄用;從 2022 年 1 月開始,Portainer 2.0 的所有新版本都將在 portainer/portainer-ce 中釋出

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.11.1

  1. 連線到遠端容器的部署

docker run -d -p 9000:9000 --name portainer --restart always -v portainer_data:/data portainer/portainer -H tcp://<REMOTE_HOST>:<REMOTE_PORT>

ps:-H 後面的remote是你想用portainert管理的docker

新增新的容器叢集環境

1. 本機連線方式

只能在建立 Portainer Server 容器時新增本地環境。部署 Portainer 後,您無法新增本地環境

第一次登陸會讓選擇管理的容器環境,這裡可以選擇本機,通過掛載/var/run/docker.sock 和docker 守護程式通訊(如圖所示),關於這部分知識後面會總結分享出來。

image.png
image.png
之後就可以看到本機上執行的Docker容器了,點選它們還可以進行容器的管理。

左邊的條目可以管理卷、建立容器、檢視主機資訊等等。基本上該有的功能都有了
image.png

2. Remote連線方式

通過該方式,可以將遠端機器新增到Portainer服務端,統一管理遠端機器上的容器環境

將 Docker Standalone 主機連線到 Portainer 時,可以使用兩種方法。您可以通過 TCP 直接連線到 Docker API,也可以在 Docker Standalone 主機上安裝 Portainer 代理並通過代理連線。
https://docs.portainer.io/v/ce-2.11/admin/environments/add/docker

1) 通過遠端訪問TCP:2375埠繫結環境
image.png
使用Remote要求被管理的主機開啟docker守護執行緒監聽埠
可以在/etc/docker/daemon.json中新增如下配置
{
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}

2) 通過Portainer Agent方式管理docker環境
https://docs.portainer.io/v/ce-2.11/start/install/agent/docker/linux
使用Agent需要在要監控的主機上建立一個portainer agent容器
docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent:2.11.1
image.png
image.png
3) 通過Portainer Agent方式管理k8s叢集環境

在k8s叢集上執行以下命令
url -L https://downloads.portainer.io/portainer-agent-ce211-k8s-nodeport.yaml -o portainer-agent-k8s.yaml; kubectl apply -f portainer-agent-k8s.yaml
image.png
image.png


在遠端k8s叢集上部署agent後,在Portainer server 上通過nodeport 或者 targetport 進行服務配置,完成k8s叢集的連線配置。
image.png
image.png


image.png

LazyDocker

https://github.com/jesseduffield/lazydocker

LazyDocker是基於終端的一個視覺化查詢工具,支援鍵盤操作和滑鼠點選。相比Portainer來說可能不那麼專業,不過對於開發者來說可能反而更加好用了。因為一般開發者都是使用命令列來執行Docker,偶爾需要圖形化檢視的時候,就可以使用LazyDocker這個工具。

Lazydocker 的具體特性如下:

  • 全視野檢視 Docker 或 docker-compose 容器環境的狀態
  • 檢視容器或服務的日誌
  • 檢視容器指標的 ascii 圖表,這樣你會更像個開發者
  • 自定義圖表以測量不同指標
  • 附加到容器/服務
  • 重啟、刪除與重新構建容器/服務
  • 檢視給定映象的祖先圖層
  • 修剪佔用磁碟空間的容器、映象或卷​

image.png
安裝LazyDocker也非常簡單,執行下面的命令即可。
docker run --rm -it -v <br />/var/run/docker.sock:/var/run/docker.sock <br />-v ~/.config/lazydocker:/.config/jesseduffield/lazydocker <br />lazyteam/lazydocker

當然如果發現LazyDocker挺好用,準備經常使用的話,還可以把它做成縮寫新增到shell配置檔案中,這樣就可以將它變成一個簡單的命令。例如我用的是zsh,就將下面這樣新增到.zshrc檔案中。以後就可以直接用lzd來呼叫LazyDocker了。

echo "alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v ~/.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker'" >> ~/.zshrc
然後就可以在終端中檢視Docker容器、映象和卷的資訊了。LazyDocker支援鍵盤操作和滑鼠點選,直接用滑鼠點選就可以檢視對應資訊了


Docker Desktop

Docker Desktop 是 Docker 官方自帶的客戶端。https://docs.docker.com/desktop/windows/; 如果是windows使用者,想在Windows系統上執行docker容器,可以使用;
image.png


image.png

小結

  • Portainer 比較適合團隊使用,因為他有訪問控制。
  • Lazydocker 屬於簡單靈活的小工具,如果你不需要複雜的功能,他們比較合適,而且會讓你更有程式設計師的感覺。
  • Docker Desktop 是 Windows/Mac 安裝 Docker 時就有的,管理功能比較簡單,在需要簡單的整合 Kubernetes 時可以用他。

相關文章