Docker-可視化管理工具總結(jié)-推薦使用Portainer
對(duì)于初學(xué)docker的小白,一款好的可視化工具有助于快速掌握docker基本形態(tài)和概念,下面針對(duì)docker可視化工具做些總結(jié)
ui-for-docker
UI For Docker是一個(gè)使用Docker Remote API的web接口,目的是提供一個(gè)簡潔純凈的客戶端實(shí)現(xiàn),為了連接和管理Docker; 該工具目前已經(jīng)無人維護(hù),建議使用下面介紹的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
Portainer
https://www.portainer.io/installation/
是一款Docker可視化管理工具,可讓您輕松構(gòu)建和管理 Docker、Docker Swarm、Kubernetes 和 Azure ACI 中的容器。
Portainer 將管理容器的復(fù)雜性隱藏在易于使用的 UI 后面。通過消除使用 CLI、編寫 YAML 或理解清單的需要,Portainer 使部署應(yīng)用程序和解決問題變得如此簡單,任何人都可以做到
Portainer-架構(gòu)
Portainer 由兩個(gè)元素組成:Portainer 服務(wù)器和 Portainer 代理。兩者都在您現(xiàn)有的容器化基礎(chǔ)設(shè)施上作為輕量級(jí)容器運(yùn)行。Portainer 代理應(yīng)該部署到集群中的每個(gè)節(jié)點(diǎn),并配置為向 Portainer 服務(wù)器容器報(bào)告。
單個(gè) Portainer 服務(wù)器將接受來自任意數(shù)量的 Portainer 代理的連接,從而提供從一個(gè)集中式界面管理多個(gè)集群的能力。為此,Portainer Server 容器需要數(shù)據(jù)持久性。Portainer 代理是無狀態(tài)的,數(shù)據(jù)被傳送回 Portainer 服務(wù)器容器。
Portainer-安裝
運(yùn)行下面兩條命令即可。這些命令會(huì)創(chuàng)建一個(gè)Portainer專用的卷,然后在8000和9000端口創(chuàng)建容器并運(yùn)行。
- 基于本地容器的部署
如果使用Portainer管理本地Docker主機(jī)的話,需要綁定/var/run/docker.sock(這里是個(gè)知識(shí)點(diǎn),涉及docker 之間通信的問題,以及docker 里運(yùn)行docker )
$ docker volume create portainer_data
$ 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
然后在瀏覽器打開對(duì)應(yīng)地址,就會(huì)發(fā)現(xiàn)成功運(yùn)行了。第一次運(yùn)行的時(shí)候需要設(shè)置賬號(hào),然后選擇要管理的Docker主機(jī)。
注意:portainer/portainer 是 Portainer v1.24.x 的鏡像名,現(xiàn)在已棄用;從 2022 年 1 月開始,Portainer 2.0 的所有新版本都將在 portainer/portainer-ce 中發(fā)布
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
- 連接到遠(yuǎn)程容器的部署
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
添加新的容器集群環(huán)境
1. 本機(jī)連接方式
只能在創(chuàng)建 Portainer Server 容器時(shí)添加本地環(huán)境。部署 Portainer 后,您無法添加本地環(huán)境
第一次登陸會(huì)讓選擇管理的容器環(huán)境,這里可以選擇本機(jī),通過掛載/var/run/docker.sock 和docker 守護(hù)進(jìn)程通信(如圖所示),關(guān)于這部分知識(shí)后面會(huì)總結(jié)分享出來。
之后就可以看到本機(jī)上運(yùn)行的Docker容器了,點(diǎn)擊它們還可以進(jìn)行容器的管理。
左邊的條目可以管理卷、創(chuàng)建容器、查看主機(jī)信息等等。基本上該有的功能都有了
2. Remote連接方式
通過該方式,可以將遠(yuǎn)程機(jī)器添加到Portainer服務(wù)端,統(tǒng)一管理遠(yuǎn)程機(jī)器上的容器環(huán)境
將 Docker Standalone 主機(jī)連接到 Portainer 時(shí),可以使用兩種方法。您可以通過 TCP 直接連接到 Docker API,也可以在 Docker Standalone 主機(jī)上安裝 Portainer 代理并通過代理連接。
https://docs.portainer.io/v/ce-2.11/admin/environments/add/docker
1) 通過遠(yuǎn)程訪問TCP:2375端口綁定環(huán)境
使用Remote要求被管理的主機(jī)開啟docker守護(hù)線程監(jiān)聽端口
可以在/etc/docker/daemon.json中添加如下配置
{
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}
2) 通過Portainer Agent方式管理docker環(huán)境
https://docs.portainer.io/v/ce-2.11/start/install/agent/docker/linux
使用Agent需要在要監(jiān)控的主機(jī)上創(chuàng)建一個(gè)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
3) 通過Portainer Agent方式管理k8s集群環(huán)境
在k8s集群上執(zhí)行以下命令
curl -L https://downloads.portainer.io/portainer-agent-ce211-k8s-nodeport.yaml -o portainer-agent-k8s.yaml; kubectl apply -f portainer-agent-k8s.yaml
在遠(yuǎn)程k8s集群上部署agent后,在Portainer server 上通過nodeport 或者 targetport 進(jìn)行服務(wù)配置,完成k8s集群的連接配置。
LazyDocker
https://github.com/jesseduffield/lazydocker
LazyDocker是基于終端的一個(gè)可視化查詢工具,支持鍵盤操作和鼠標(biāo)點(diǎn)擊。相比Portainer來說可能不那么專業(yè),不過對(duì)于開發(fā)者來說可能反而更加好用了。因?yàn)橐话汩_發(fā)者都是使用命令行來運(yùn)行Docker,偶爾需要圖形化查看的時(shí)候,就可以使用LazyDocker這個(gè)工具。
Lazydocker 的具體特性如下:
- 全視野查看 Docker 或 docker-compose 容器環(huán)境的狀態(tài)
- 查看容器或服務(wù)的日志
- 查看容器指標(biāo)的 ascii 圖表,這樣你會(huì)更像個(gè)開發(fā)者
- 自定義圖表以測(cè)量不同指標(biāo)
- 附加到容器/服務(wù)
- 重啟、刪除與重新構(gòu)建容器/服務(wù)
- 查看給定鏡像的祖先圖層
- 修剪占用磁盤空間的容器、鏡像或卷
安裝LazyDocker也非常簡單,運(yùn)行下面的命令即可。
docker run --rm -it -v \
/var/run/docker.sock:/var/run/docker.sock \
-v ~/.config/lazydocker:/.config/jesseduffield/lazydocker \
lazyteam/lazydocker
當(dāng)然如果發(fā)現(xiàn)LazyDocker挺好用,準(zhǔn)備經(jīng)常使用的話,還可以把它做成縮寫添加到shell配置文件中,這樣就可以將它變成一個(gè)簡單的命令。例如我用的是zsh,就將下面這樣添加到.zshrc文件中。以后就可以直接用lzd來調(diào)用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支持鍵盤操作和鼠標(biāo)點(diǎn)擊,直接用鼠標(biāo)點(diǎn)擊就可以查看對(duì)應(yīng)信息了
Docker Desktop
Docker Desktop 是 Docker 官方自帶的客戶端。https://docs.docker.com/desktop/windows/; 如果是windows用戶,想在Windows系統(tǒng)上運(yùn)行docker容器,可以使用;
小結(jié)
- Portainer 比較適合團(tuán)隊(duì)使用,因?yàn)樗性L問控制。
- Lazydocker 屬于簡單靈活的小工具,如果你不需要復(fù)雜的功能,他們比較合適,而且會(huì)讓你更有程序員的感覺。
- Docker Desktop 是 Windows/Mac 安裝 Docker 時(shí)就有的,管理功能比較簡單,在需要簡單的集成 Kubernetes 時(shí)可以用他。

浙公網(wǎng)安備 33010602011771號(hào)