Contents
前言
平常我們在搭建docker的時候,不管是用docker run
命令還是docker compose
命令,都是在終端機裡用命令完成的,而需要查看各種docker狀態的時候,雖然依舊可以用命令完成,但是總的來說卻不甚直觀。
雖然win,mac,linux下都有對應的docker desktop可以安裝,但是除非平時都作為桌面終端使用,否則為了使用GUI界面管理還必須先使用遠端桌面連接是相當不便的,所以我們需要的是能夠直接用瀏覽器進行管理的圖形介面,這就輪到本文要介紹的:portainer。
Portainer是一款開源的容器管理平台,它提供了一個直覺易用的Web介面,幫助使用者管理Docker容器叢集、映像檔、磁碟區等資源。 Portainer 支援多種Docker 環境,包括本機Docker、Swarm 模式、Kubernetes 等,並支援多租用戶、RBAC權限管理等功能。使用Portainer,可以輕鬆建立、啟動、停止、刪除容器,管理容器的網路、磁碟區、環境變數等設置,查看容器日誌、統計資料等。此外,Portainer 還提供了一些實用的功能,例如容器範本、自訂儀錶板、事件監控、Web 終端機等。
部署portainer
命令如下:
docker run --name=portainer -d --restart=always \ -p 9000:9000 \ -v /run/docker.sock:/var/run/docker.sock:ro \ -v /docker/portainer/data: /data \ --workdir=/ --runtime=runc \ portainer/portainer-ce:latest
參數解釋:
-p 9000:9000
映射宿主機的9000端口到容器的9000端口,這個大家根據實際情況調整即可。
-v /run/docker.sock:/var/run/docker.sock:ro
/run/docker.sock是Docker守護程序預設監聽的Unix域套接字,將宿主機的docker.sock映射進了protainer裡,portainer可以透過它與宿主機的Docker守護程序進行通信,從而實現對其他容器的管理。
--workdir=/ --runtime=runc \
指定工作目錄和運行時
介面簡介
使用http://宿主機IP:9000登入portainer,首次登入需要建立管理員帳號:
創建後進入系統,介面如下:
portainer可以管理多種環境,透過上圖右邊的"Add Environments"可以管理其他機器上的docker 或管理swarm、k8s 叢集。本次我們只是在地管理,所以點左邊的"Get Started",進入local頁面:
點選上圖右邊紅框中的"Live connect",進入dashboard:
Stacks裡的是我透過docker compose指令建立的容器集合:
我這裡面有2個,因為我只用了2次docker compose指令,一個是長亭雷池的waf,一個是umami流量監控。
Images裡是所有已經下載的鏡像,Netowrks是所有已經創建的網絡,這2個就不細說了,然後就是最重要的Containers介面:
和docker desktop相比,portainer最大的優勢是點擊進入具體的docker之後能做的事,例如我點擊進入第一個bind9:
然後繼續點擊上圖紅框中的"Duplicate/Edit"之後,就可以對容器的參數進行修改,主要2個部分:
Network ports configuration,可以新增刪除或修改已對應的連接埠:
Advanced container settings,可以直接修改環境參數:
修改完成後,點擊上圖紅框中的按鈕重新部署容器即可(其實就是刪除容器以後重新以你配置的參數建立新容器)。
其實吧,你說這個功能有多大作用吧,其實也沒多大作用,即便沒有這個功能,手動刪除容器然後用新參數重新運行一次docker run即可,但是如果當時不方便ssh進行管理,只能web的話,這個功能就有作用了。
設定公網訪問
如果要發佈到公網上的,大家需要根據實際環境和自己使用的反向代理選擇最適合自己的發布方式,可以參考我以前的幾篇文章:
1、docker系列使用docker基於NPM來建構自己的反向代理
2、linux面板系列配置反向代理並使用非443連接埠進行發布
3、家庭資料中心系列透過國內備案雲主機白嫖cloudflare實現國外快速存取國內站點
4、家庭資料中心系列透過無公網IP的家庭寬頻白嫖cloudflare實現快速建站(通用)
其中第1,2種方式適合有公網ip卻沒有合法443端口的環境(家庭寬頻、未備案的雲主機),需要在url後面加非標端口(如果使用cloudflare建站的不需要加端口,但是需要自訂來源站端口,這個可以參考:家庭資料中心系列透過cloudflare的Origin Rules解決建站有公網IP卻沒有合法的80、443埠的問題)。第3種方式適合有備案的雲端主機,第4種方式適合所有環境(包括沒有公網IP的環境),也是我建議的方式(不管你的環境有沒有公網IP,因為這種方式不需要直接在公網上跑https流量)。