Portainer
Portainer 概述
Portainer
是一個 Docker
視覺化管理工具,為 Docker
提供狀態提示皮膚、快速配置部署、資料卷管理等各種功能,基本上能滿足中小型容器管理的需求。
我也感覺 Portainer
使用起來非常方便
Portainer 版本
Portainer
社群版目前具有兩個映象。portainer/portainer
和 portainer/portainer-ce
。
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/84bbc9acdea14fc62df83568bdb54843604acc2d742997176c753b8b2b2ffc1f.png)
portainer/portainer
portainer/portainer 是 1.X版本(老版本)映象。官方現在已棄用此映象。
不過目前網上教程都是以此映象為準。我剛開始也沒注意,結果被坑到了。
此映象版本對非 SWARM
雲連線的 Docker Compose
語法版本只支援到 2.X,並且建立具名Volume
掛載目錄時有問題(我就被這個坑到了)。
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/cbb0664083fe9e9b2e24f585fe9f96fe22229aace4b29059081a37e2391ac264.png)
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
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/e59b0c697b75d96960d2a60939bedac24e476333230f1f780209108bcf1ea0ad.png)
- -f:
YAML
檔案存放的地址,在此檔案上傳到了 /yml/docker-compose/ 目錄, - -p: 設定當前
Docker Compose
名稱 - up: 根據配置檔案重新構建服務,啟動映象。如果主機沒有此映象,預設情況會下載映象(可以配置引數是否允許下載映象)。當主機中沒有此
portainer/portainer-ce
映象時會進行下載,所有可能有些慢 - -d: 設定為後臺執行,與
docker run -d
引數一致
成功執行後,會自動啟動容器。
並且在掛載的目下可以看到容器中的的資料
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/e63ed6508dd16acbbabecd2d7ace4d76d1ac09a02482add691df83b8f97a8fba.png)
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/3222c10adb4f0ce473b98a307f39aabf762479b0191388063835e92cbb213273.png)
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/2f62f598e7a340846ea72211d44a864647418a4b2feb770390d0bc99aac56faf.png)
此時就可以使用訪問 Portainer
頁面。
注意:如果是雲主機,需要啟動 9000 埠訪問策略,否則無法訪問。
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/5e6f63459801c925ae56c2b7ebebcd53b73f34c651c4c73c78289b1df793b649.png)
Portainer
第一次訪問會跳轉到設定管理員使用者頁面
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/15e3e62444571b20d97e333e42647ea970b13cff36f98f0010f15330d467b07b.png)
設定完成之後,如果本地具有 Docker
, 會預設連線到本地 Docker
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/8e052216cc51a40e706290596fd4bbf3ddc64c50fb1fd5ece91330ec81cd8e9d.png)
Portainer 頁面
進入主頁面後,第一個就是自動連線的本地 Docker
, 點選可以看到 Docker
各種資訊
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/96c11dc69fa11e620c34071802e8092462404daccee260bbd35cb5ed04ac7322.png)
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/73153d420f6d8bd6eaffad9dba6effb33030fc924999ead6d5242e8036f3e554.png)
- 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
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/ae27184dcf5d8fa2523dd2dc11114cd7bd1c3fe68b25a95d0be1b4ea41d0e4a6.png)
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 版本新新增的,我也沒了解)
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/1756b38d1c1fbabbb190c1f4254ddfc977a314be3dac3f8928b27438cdfb5856.png)
個人比較喜歡使用 Upload 在本地使用編輯器編寫完成之後上傳。當然也可以使用其它方式。看使用場景和個人喜好。
Portainer API 連線方式
Portainer
支援多種連線方式。 介紹一種使用 Docker API 連線方式
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/16473d8853442929ee775dd6db70a0f61c7572f1cf36543c53c5e88772b9ea26.png)
API 連線方式是使用 TCP
協議訪問的 Docker API 進行通訊,需要設定 Docker API,允許 Docker
被訪問
Docker API 需要設定 /lib/systemd/system/docker.service 檔案 ExecStart 屬性
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/cb76fa3a7f8867c6cc24145821bf27a923c95135bb557437616afaba85e0ac79.png)
在此設定只允許內網訪問 ,其實只允許本地 IP 訪問(模擬遠端連線方式)
PS:注意:設定連線主機根據實際情況設定,千萬不要設定為 tcp://0.0.0.0:2375,這樣極大可能會中病毒,親測中過挖礦指令碼病毒。
設定完成後需要重啟 Docker
服務
sudo systemctl daemon-reload
sudo systemctl restart docker
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/3c6f1c27e44f75703f807ecbfc2353e5d04b9d192da7e4227469d1c669ccc478.png)
現在 Portainer
就可以使用 API 連線方式
![私有化輕量級持續整合部署方案--01-環境配置(下)](https://i.iter01.com/images/c50023f86eaef94a61e93a6e545d63a1eb08b85ab1be87a2f257c912d9c0af89.png)