用Portainer.io來監(jiān)控和管理Docker容器(1)
隨著 Docker 的使用量越來越大,監(jiān)控 Docker 容器正在變得更有挑戰(zhàn)性。每天都有大量的 Docker 容器被創(chuàng)建,因此如何監(jiān)控它們就變得非常重要。目前已經(jīng)有一些內(nèi)置的工具和技術(shù),不過對(duì)它們進(jìn)行配置有一些復(fù)雜。隨著基于微服務(wù)的架構(gòu)正在變成接下來事實(shí)上的標(biāo)準(zhǔn),學(xué)會(huì)這種技術(shù)將為你的知識(shí)庫再添一項(xiàng)新技能。
基于上述場(chǎng)景,對(duì)一種輕量、健壯的鏡像管理工具的需求日益增加。Portainer.io 解決了這個(gè)問題。 Portainer.io(最新版本是 1.20.2)非常輕量,只需 2-3 個(gè)命令就可以配置好,已經(jīng)在 Docker 用戶中流行起來。
比起其他工具,這個(gè)工具有很多優(yōu)勢(shì),其中一些如下所示:
- 輕量(安裝此工具僅需 2 到 3 個(gè)命令,與此同時(shí)安裝鏡像的大小在 26 M 到 30 M 之間)
- 健壯且易用
- 可用于 Docker 監(jiān)控和構(gòu)建
- 提供對(duì) Docker 環(huán)境的詳細(xì)概況
- 可以管理容器、鏡像、網(wǎng)絡(luò)和卷
- Portainer 部署方便,僅需一個(gè) Docker 命令(可以在任意地方運(yùn)行)
- 可以對(duì)完整的 Docker 容器環(huán)境進(jìn)行監(jiān)控
Portainer 同時(shí)具有以下服務(wù):
- 社區(qū)支持
- 企業(yè)支持
- 與合作伙伴 OEM 服務(wù)一起的專業(yè)服務(wù)
Portainer 的功能和特性如下:
1. 配備了漂亮的儀表盤,易于使用和監(jiān)控 2. 自帶大量內(nèi)置模板,便于操作和創(chuàng)建 3. 服務(wù)支持(僅 OEM 和企業(yè)用戶) 4. 對(duì)容器、鏡像、網(wǎng)絡(luò)、卷以及配置進(jìn)行幾乎實(shí)時(shí)的監(jiān)控 5. 包含 Docker 集群監(jiān)控功能 6. 功能多樣的用戶管理
另請(qǐng)閱讀:如何在 Ubuntu 16.04 / 18.04 LTS 版本中安裝 Docker CE
如何在 Ubuntu Linux / RHEL / CentOS 系統(tǒng)上安裝和配置 Portainer.io
注意:下面的安裝過程是在 Ubuntu 18.04 上完成的,但是對(duì) RHEL 和 CentOS 同樣適用,同時(shí)假設(shè)你已經(jīng)在系統(tǒng)上安裝了 Docker CE。
root@linuxtechi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
root@linuxtechi:~$
為 Portainer 創(chuàng)建卷:
root@linuxtechi:~$ sudo docker volume create portainer_data
portainer_data
root@linuxtechi:~$
使用下面的 Docker 命令來運(yùn)行 Portainer 容器:
root@linuxtechi:~$ sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
0b1e707a06d2: Pull complete
Digest: sha256:d6cc2c20c0af38d8d557ab994c419c799a10fe825e4aa57fea2e2e507a13747d
Status: Downloaded newer image for portainer/portainer:latest
35286de9f2e21d197309575bb52b5599fec24d4f373cc27210d98abc60244107
root@linuxtechi:~$
安裝完成之后,通過主機(jī)或 Docker 的 IP 加上 Docker 引擎使用的 9000 端口在瀏覽器中打開 Portainer。
注意:如果 Docker 所在主機(jī)的系統(tǒng)防火墻開啟,需要確保 9000 端口被放行,否則瀏覽器頁面將無法打開。
在我這邊,我的 Docker 主機(jī)/引擎的 IP 是 192.168.1.16
,所以 URL 就是 http://192.168.1.16:9000
Portainer-Login-User-Name-Password
在創(chuàng)建管理員用戶時(shí),請(qǐng)確保密碼是 8 個(gè)字符,同時(shí)用戶名為 admin
,然后點(diǎn)擊 “Create User”。
接下來進(jìn)入如下所示的頁面,選中 “Local” 矩形框。
Connect-Portainer-Local-Docker
點(diǎn)擊 “Connect”,
可以看到 admin 用戶的漂亮首頁如下所示,
Portainer-io-Docker-Monitor-Dashboard
現(xiàn)在 Portainer 已經(jīng)準(zhǔn)備好運(yùn)行和管理你的 Docker 容器了,同時(shí)也可用于容器監(jiān)控。
在 Portainer 中管理容器鏡像
Portainer-Endpoints
檢查當(dāng)前的狀態(tài),可以看到有兩個(gè)容器已經(jīng)在運(yùn)行了,如果你創(chuàng)建另一個(gè)也會(huì)立即顯示出來。
像下面這樣,在命令行中啟動(dòng)一個(gè)或兩個(gè)容器,
root@linuxtechi:~$ sudo docker run --name test -it debian
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
e79bb959ec00: Pull complete
Digest: sha256:724b0fbbda7fda6372ffed586670573c59e07a48c86d606bab05db118abe0ef5
Status: Downloaded newer image for debian:latest
root@linuxtechi:/#
然后在 Portainer 頁面中點(diǎn)擊刷新按鈕(會(huì)出現(xiàn)一條讓你確認(rèn)的消息,點(diǎn)擊上面的 “Continue”),就可以像下面高亮顯示的一樣看到 3 個(gè)容器了。
Portainer-io-new-container-image
點(diǎn)擊上圖中紅圈圈出來的 “containers”,下一個(gè)頁面會(huì)顯示 “Dashboard Endpoint summary”。
Portainer-io-Docker-Container-Dash
在這個(gè)頁面中,點(diǎn)擊上圖高亮和紅圈圈出來的 “Containers”,就可以對(duì)容器進(jìn)行監(jiān)控了。
以簡單的方式對(duì)容器進(jìn)行監(jiān)控
繼續(xù)上面的步驟,就會(huì)出現(xiàn)一個(gè)如下所示精致、漂亮的 “Container list” 頁面。
Portainer-Container-List
所有的容器都可以在這里進(jìn)行控制(停止、啟動(dòng)等等)。
1、在這個(gè)頁面上,停止我們之前啟動(dòng)的 “test” 容器(這是一個(gè)我們?cè)缦葐?dòng)的 debian 容器)。
選中此容器前面的復(fù)選框,然后點(diǎn)擊上面的“Stop”按鈕來停止。
Stop-Container-Portainer-io-dashboard
在命令行中,你也會(huì)看到這個(gè)容器現(xiàn)在已經(jīng)停止或退出了:
root@linuxtechi:~$ sudo docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d45902e717c0 debian "bash" 21 minutes ago Exited (0) 49 seconds ago test
08b96eddbae9 centos:7 "/bin/bash" About an hour ago Exited (137) 9 minutes ago mycontainer2
35286de9f2e2 portainer/portainer "/portainer" 2 hours ago Up About an hour 0.0.0.0:9000->9000/tcp compassionate_benz
root@linuxtechi:~$
2、現(xiàn)在,在 Portainer 頁面中啟動(dòng)已經(jīng)停止的兩個(gè)容器(test 和 mycontainer2)
選中已停止的這兩個(gè)容器前面的復(fù)選框,然后點(diǎn)擊 “Start”。
Start-Containers-Portainer-GUI
你會(huì)立即看到兩條窗口提醒,內(nèi)容是“容器成功啟動(dòng)”,并且兩個(gè)容器的狀態(tài)變?yōu)檎谶\(yùn)行。
Conatiner-Started-successfully-Portainer-GUI
一步步探索其他多種選項(xiàng)和特性
1、點(diǎn)擊高亮的“Images”,你會(huì)看到如下頁面:
Docker-Container-Images-Portainer-GUI
這是可用的容器列表,其中一些可能沒在運(yùn)行。這些容器可以被導(dǎo)入、導(dǎo)出或者上傳到不同的位置,截圖如下所示。
Upload-Docker-Container-Image-Portainer-GUI
2、點(diǎn)擊高亮的“Volumes”,顯示如下頁面:
Volume-list-Portainer-io-gui
3、通過下面的操作,可以很容易的添加卷。點(diǎn)擊添加卷按鈕,出現(xiàn)如下頁面,在名稱輸入框中輸入卷名稱,例如 “myvol”,然后點(diǎn)擊 “Create the volume” 按鈕:
Volume-Creation-Portainer-io-gui
新創(chuàng)建的卷如下所示(狀態(tài)為未使用):
Volume-unused-Portainer-io-gui
結(jié)論
通過上面的安裝步驟,你可以到配置和使用 Portainer.io 的多種選項(xiàng)是多么簡單和精美,它提供了用于構(gòu)建和監(jiān)控 Docker 容器的多種功能和選項(xiàng)。如前所述,這個(gè)一個(gè)非常輕量的工具,因此不會(huì)給主機(jī)系統(tǒng)增加任何負(fù)擔(dān)。下一組選項(xiàng)將在本系列的第 2 部分中進(jìn)行探討。
另請(qǐng)閱讀: 用 Portainer.io 來監(jiān)控和管理 Docker 容器(2)