Portainer
Portainer 概述
Portainer
是一個 Docker
視覺化管理工具,為 Docker
提供狀態提示皮膚、快速配置部署、資料卷管理等各種功能,基本上能滿足中小型容器管理的需求。
我也感覺 Portainer
使用起來非常方便
Portainer 版本
Portainer
社群版目前具有兩個映象。portainer/portainer
和 portainer/portainer-ce
。
portainer/portainer
portainer/portainer 是 1.X版本(老版本)映象。官方現在已棄用此映象。
不過目前網上教程都是以此映象為準。我剛開始也沒注意,結果被坑到了。
此映象版本對非 SWARM
雲連線的 Docker Compose
語法版本只支援到 2.X,並且建立具名Volume
掛載目錄時有問題(我就被這個坑到了)。
portainer/portainer-ce
portainer/portainer-ce 是 2.X 版本的新映象。
完全支援 Docker Compose
3.X 語法版本。
Portainer 部署
在此 Portainer
通過 Docker Compose
進行部署。
Docker Compose
可觀性較強,並且配置檔案可以儲存 以後的所有部署方案都採用這種形式。
version: '3.9'
services:
portainer:
image: portainer/portainer-ce
container_name: portainer
restart: always
ports:
- 9000:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /volumes/portainer:/data
以上是部署 Portainer
的 YAML
格式配置檔案
- version:
YMAL
格式版本,當前版本具有 1、 2 、 2.X、 3.X,每個版本的語法都略有差異,不過差異並不大,一般語法沒什麼區別。 不過不同版本語法對Docker
版本有一定要求,詳細可以參考:https://docs.docker.com/compose/compose-file/compose-file-v3/ - services:
容器組
配置,依照YAML
格式可配置多個容器,當前只有一個portainer
配置。services
之間可以配置 network,依賴順序等。- portainer:這是
服務(Service)
名稱,代表一個容器(Container)
。- image:容器所使用的映象
- container_name:容器名稱
- restart:容器重啟策略。就是
docker run
時設定 restart - ports:對映埠號,第一個埠號是宿主機埠號,可以設定任意一個未被使用的埠號;第二個埠號是容器中所提供的埠號,容器既然理解為一個單獨的系統環境,那麼就需要提供一些埠號供外部訪問。
Portainer
提供了埠號為 9000 - volumes:資料卷掛載,容器作為單獨的系統環境,往往需要指定宿主目錄對容器內目錄掛載。例如資料庫應用,如果不掛載宿主目錄,容器刪除資料款中資料就沒了。
或者掛載容器的配置檔案,這樣就不需要每次都進入容器內部更新配置。
第一個可以是一個volume
名稱 或者 宿主目錄 ,當直接為宿主目錄 時,容器啟動時會使用 宿主目錄 覆蓋 容器內目錄 這個之後會介紹;
第二個是容器內目錄(Portainer
資料儲存在容器內 /data 目錄)。
- portainer:這是
PS: 注意:
Volume
掛載目錄和檔案時,有兩種情況。目錄:宿主機中可以不存在此目錄,Docker
在啟動容器時會自動建立目錄。 檔案:當掛載路徑為檔案時,宿主機中必須存在此檔案
配置屬性中還可以設定好多引數,例如:environment
,之後會使用使用,不再介紹。
/var/run/docker.sock
是一個特殊的檔案,有些容器需要提供此檔案。
檔案編寫完成後上傳伺服器執行
docker-compose -f /yml/docker-compose/portainer.yml -p portainer up -d
- -f:
YAML
檔案存放的地址,在此檔案上傳到了 /yml/docker-compose/ 目錄, - -p: 設定當前
Docker Compose
名稱 - up: 根據配置檔案重新構建服務,啟動映象。如果主機沒有此映象,預設情況會下載映象(可以配置引數是否允許下載映象)。當主機中沒有此
portainer/portainer-ce
映象時會進行下載,所有可能有些慢 - -d: 設定為後臺執行,與
docker run -d
引數一致
成功執行後,會自動啟動容器。
並且在掛載的目下可以看到容器中的的資料
此時就可以使用訪問 Portainer
頁面。
注意:如果是雲主機,需要啟動 9000 埠訪問策略,否則無法訪問。
Portainer
第一次訪問會跳轉到設定管理員使用者頁面
設定完成之後,如果本地具有 Docker
, 會預設連線到本地 Docker
Portainer 頁面
進入主頁面後,第一個就是自動連線的本地 Docker
, 點選可以看到 Docker
各種資訊
- Stack:
Docker Compose
管理,對當前Docker Compose
進行管理,並且可以直接上傳 YAML 檔案進行構建容器。目前只有一個Stack
:portainer - Container:
Docker
容器管理,可以對所有容器進行管理設定。目前也只有一個容器
:portainer - Image:
Docker
映象管理,對當前Docker
所有映象進行管理,目前也只有一個映象
:portainer/portainer - Volumes:
Docker
資料卷管理, - Networks:
Docker
network 管理,目前只有預設的 4 個Network
Stack 模組
Stack 是用來管理 Docker Compose
,目前只有一個,也就是部署的 Portainer
Limited
未使用 Portainer
視覺化工具部署的 Docker Compose
, 在 Portainer
視覺化工具內部是不允許操作的。
例如 Portainer, 在 Portainer
視覺化工具中 Control 屬性顯示為 Limited, 意思就是不允許操作這個 stack
。
Add Stack
點選 Add Stack 按鈕就可以進行新增 Docker Compose
, Portainer
支援四種方式新增;
- Web editor(直接在當前頁編寫配置)
- Upload(提供本地上傳 xxx.yml 檔案)
- Repository(提供一個配置檔案的 URL 地址)
- Custom template 自定義模板 (2.X 版本新新增的,我也沒了解)
個人比較喜歡使用 Upload 在本地使用編輯器編寫完成之後上傳。當然也可以使用其它方式。看使用場景和個人喜好。
Portainer API 連線方式
Portainer
支援多種連線方式。 介紹一種使用 Docker API 連線方式
API 連線方式是使用 TCP
協議訪問的 Docker API 進行通訊,需要設定 Docker API,允許 Docker
被訪問
Docker API 需要設定 /lib/systemd/system/docker.service 檔案 ExecStart 屬性
在此設定只允許內網訪問 ,其實只允許本地 IP 訪問(模擬遠端連線方式)
PS:注意:設定連線主機根據實際情況設定,千萬不要設定為 tcp://0.0.0.0:2375,這樣極大可能會中病毒,親測中過挖礦指令碼病毒。
設定完成後需要重啟 Docker
服務
sudo systemctl daemon-reload
sudo systemctl restart docker
現在 Portainer
就可以使用 API 連線方式