Portainer.io 簡介
簡介
Portainer 是一個 GUI 的 Docker 管理工具,為 Docker 提供一個簡易但功能強大的管理介面,除了 Docker 以外也支援 Kubernete、Nomad。並且提供遠端管理,可以在一個地方管理多個不同的 Docker 環境。
Powerful container management software for Platform Teams, DevOps, Dev
安裝
💡 以下皆以免費的 Community 版本為例。
💡 使用前必須安裝 Docker Engine (Windows 為 Docker Desktop)。
建立資料 Volume
1
docker volume create portainer_data
執行 Portainer
1
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:latest
💡 這邊我只開 Port
9443
,Port8000
是 Edge Agent 用的,所以如果確定不會用到可以將-p 8000:8000
移除。註冊帳號
⚠️ Portainer 預設走 https 網址列必須打
https
才能連上。瀏覽器會警告連線不安全,但在內網中要使用 ssl 憑證的話會很麻煩,這邊我們直接按繼續前往即可。
接著系統會要你建立帳號,密碼必須 12 個字元以上。
建立完成後,選擇 Get Started 建立本機環境即可開始使用。
💡 如果連上去後出現以下畫面:
代表你開他之後太久沒理他了,因為安全因素鎖起來,請重開 portainer 再進行初始設定。
1 | docker restart portainer |
使用
基本操作
登入之後映入眼簾的應該是這個首頁,目前只有一個本地環境,可以透過後面的介紹新增遠端環境。
選擇一個環境後,出現的是儀表板,會列出目前 Docker 的狀態和基本資訊。
Containers 為目前開啟的容器,連動到環境上 Docker 的容器,可以對容器進行常見的 Docker 操作。
點進去可以查看更詳細的容器資訊,包括容器的 Log,也可以針對容器設定進行修改,也可以開啟終端。
Images 則是 Docker 目前儲存的所有 Dockers Image,同樣可以進行常見的 Docker 操作,包括從遠端 Image 庫拉 Image 下來。
Network 則是 Docker 使用的虛擬內網。
Volumes 是 Docker 使用的儲存用 Volume,用來掛在 Container 上作為永久儲存。
若要新增一個容器,可以在 Containers 頁按下 Add Container ,並填寫容器資料之後,按下 Deploy the container 即可。
很簡單吧,其實你只要有 Docker 的基本概念,這個工具應該很好上手,接下來介紹一些方便的功能。
App Template
Protainer 提供一系列 App 範本,可供您快速建立一個服務,例如我想要架一個 MySQL 資料庫:
點一下 MySQL
填上 Container 名稱和 Root 的密碼
按下 Deploy the container
好了,你成功架了一個 MySQL Server 了。
不過因為剛剛沒有額外設定,他預設會隨機挑一個 Port 來開,理論上你應該可以直接用 MySQL 的 Client 來連線到這個伺服器。
💡 如果要在建立時設定轉出來的 Port,可以點開 Show advanced options 指定你要的 Port 甚至 MySQL 資料的儲存位置。
💡 你應該會發現他預設開了 MySQL 5.7,因為 MySQL 8 在容器內可能會出現 Innodb 錯誤,雖然我測試下來在實體機器的 Docker 開 8 的話沒有出現太大的問題,如果你想要升級的話,可以參考以下步驟:
點開剛剛建立的 MySQL container
按下 Duplicate/Edit
將 Image 從
mysql/mysql-server:5.7
改成mysql/mysql-server:8.0
按下 Deploy the container,系統會問你是否取代
Stacks
Stacks 其實就是一個 Docker compose 的集中地,在這邊寫上 Docker compose 的檔案內容後,即可透過 Portainer 管理。
按下 Add stack
貼上 docker-compose.yml 的內容,以 WordPress 為例,或按下 Upload 選擇檔案
awesome-compose/compose.yaml at master · docker/awesome-compose
如果需要指定環境變數可以在這邊設定
按下 Deploy the stack,就會開始部屬
點進去後,可以看到這個 Stack 的資訊以及他的相關 Container 並加以管理
也可以嘗試連線看看是否有架設成功
遠端管理
Portainer 提供在一個站點集中管理多台 Docker 機器的功能,設定方式也非常簡單,選擇一種情境即可。
Agent
使用此方式,這個伺服器的 Port 9001 (預設)需要可以被 Portainer 碰到,設定方式如下:
在遠端伺服器輸入以下指令架設 Agent 伺服器
1
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:latest
在本機的 Portainer 上,進入 Environments 頁,並按下 Add Environment
按下 Docker Standalone
輸入遠端伺服器的名稱和位址填上遠端伺服器的 IP 和 Port 後,按下 Connect
出現新增成功後,回到首頁,就會看到遠端伺服器了
Edge Agent
如果遠端伺服器沒辦法隨便開 Port 出來,可以選擇 Edge Agent 反過來讓遠端伺服器主動把設定丟給 Portainer,此時 Portainer 就需要開 Port 8000
,設定方式如下:
如果在啟動 Portainer 時沒有開 Port
8000
,請重新啟動:停止原有的 container
1
docker stop portainer
移除原有的 container
1
docker rm portainer
以 Port
8000
和 Port9443
重新啟動 Portainer1
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:latest
在本機的 Portainer 上,進入 Environments 頁,並按下 Add Environment
按下 Docker Standalone
進入這頁,這次選擇 Edge Agent,並填上本機的 Portainer 網址,不能是 localhost
按下 Create ,Portainer 會給你一個指令,將他複製到遠端伺服器上
看一下右上角,如果出現 heartbeat 代表有收到資料
回到首頁,就會看到遠端伺服器了
更新
更新主伺服器
💡 更新時雖然不會丟設定,還是建議備份設定檔。
進入 Settings
選擇最底下的 Download Backup 下載目前的設定檔
停止原有的 container
1
docker stop portainer
移除原有的 container
1
docker rm portainer
下載最新 Image
1
docker pull portainer/portainer-ce:latest
啟動 Portainer
1
docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
💡 如果需要使用 Edge Agent ,請再加上
-p 8000:8000
Upgrading on Docker Standalone
更新 Agent
停止原有的 container
1
docker stop portainer_agent
移除原有的 container
1
docker rm portainer_agent
下載最新 Image
1
docker pull portainer/agent:latest
啟動 Portainer
1
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:latest
Upgrading on Docker Standalone
更新 Edge Agent
在本機的 Portainer 上,進入 Environments 頁,進入要更新的 Edge Agent 伺服器,會看到兩筆 Key,等會會用到
停止原有的 container
1
docker stop portainer_edge_agent
移除原有的 container
1
docker rm portainer_edge_agent
下載最新 Image
1
docker pull portainer/agent:latest
啟動 Portainer
1
2
3
4
5
6
7
8
9
10
11
12docker run -d \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v /:/host \
-v portainer_agent_data:/data \
--restart always \
-e EDGE=1 \
-e EDGE_ID=your-edge-identifier-here \
-e EDGE_KEY=your-edge-key-here \
-e EDGE_INSECURE_POLL=1 \
--name portainer_edge_agent \
portainer/agent:latest其中,
your-edge-identifier-here
換成 Edge Indentifier 的值,your-edge-key-here
換成 Edge Key 的值
後記
本文是我在 2022/12 寫的公開筆記,有興趣看原文的話可以到 Notion 上看,有任何問題歡迎提出。
- Title: Portainer.io 簡介
- Author: jimchen5209
- Created at : 2024-03-28 12:06:04
- Updated at : 2024-11-27 14:50:30
- Link: https://blog.lce-lab.dev/2024/03/28/Portainer-io-簡介/
- License: This work is licensed under CC BY-NC-SA 4.0.