Share This Post

簡介

Untitled

Portainer 是一個 GUI Docker 管理工具,為 Docker 提供一個簡易但功能強大的管理,除了 Docker 以外也支援 Kubernete、Nomad,並且提供遠端管理,可以在一個地方管理多個 Docker 環境。

Untitled

Powerful container management software for Platform Teams, DevOps, Dev

安裝

<aside> 💡 以下皆以免費的 Community 版本為例

</aside>

<aside> 💡 使用前必須安裝 Docker Engine (Windows 為 Docker Desktop)

Docker Engine installation overview

</aside>

  1. 建立資料 Volume
docker volume create portainer_data
  1. 執行 Portainer
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

<aside> 💡 這邊我只開 Port 9443,Port 8000 是 Edge Agent 用的,所以如果確定不會用到可以將 -p 8000:8000 移除

</aside>

  1. 註冊帳號

前往 **https://**localhost:9443/

<aside> ⚠️ Portainer 預設走 https 網址列必須打 https 才能連上

</aside>

瀏覽器會警告連線不安全,但是內網要 ssl 憑證的話很麻煩,這邊我們直接按繼續前往即可

Untitled

接著系統會要你建立帳號,密碼必須 12 個字以上

Untitled

建立完成後,選擇 Get Started 建立本機環境即可開始使用

Untitled

<aside> 💡 如果連上去後出現以下畫面

Untitled

代表你開他之後太久沒理他了,因為安全因素鎖起來,請重開 portainer 再進行初始設定

docker restart portainer

</aside>

Docker Standalone

使用

基本操作

登入之後映入眼簾的應該是這個首頁,目前只有一個本地環境,可以透過後面的介紹新增遠端環境

Untitled

選擇一個環境後,出現的是儀表板,會列出目前 Docker 的狀態和基本資訊

Untitled

Containers 為目前開啟的容器,連動到環境上 Docker 的容器,可以對容器進行常見的 Docker 操作

Untitled

點進去可以查看更詳細的容器資訊,包括容器的 Log,也可以針對容器設定進行修改,也可以開啟終端

Untitled

Images 則是 Docker 目前儲存的所有 Dockers Image,同樣可以進行常見的 Docker 操作,包括從遠端 Image 庫拉 Image 下來

Untitled

Network 則是 Docker 使用的虛擬內網

Untitled

Volumes 是 Docker 使用的儲存用 Volume,用來掛在 Container 上作為永久儲存

Untitled

若要新增一個容器,可以在 Containers 頁按下 Add Container ,並填寫容器資料之後,按下 Deploy the container 即可

Untitled
Untitled

很簡單吧,其實你只要有 Docker 的基本概念,這個工具應該很好上手,接下來介紹一些方便的功能

App Template

Untitled

Protainer 提供一系列 App 範本,可供您快速建立一個服務,例如我想要架一個 Mysql 資料庫:

  1. 點一下 MySQL Untitled
  2. 填上 Container 名稱和 Root 的密碼 Untitled
  3. 按下 Deploy the container

好了,你成功架了一個 Mysql server 了

Untitled

不過因為剛剛沒有額外設定,他預設會隨機挑一個 Port 來開,理論上你應該可以直接用 Mysql 的 Client 來連線到這個伺服器

Untitled

<aside> 💡 如果要在建立時設定轉出來的 Port,可以點開 Show advanced options 指定你要的 Port 甚至 Mysql 資料的儲存位置

Untitled

</aside>

<aside> 💡 你應該會發現他預設開了 MySQL 5.7,因為 MySQL 8 在容器內可能會出現 Innodb 錯誤,雖然我測試下來在實體機器的 Docker 開 8 的話沒有出現太大的問題,如果你想要升級的話,可以參考以下步驟:

  1. 點開剛剛建立的 MySQL container
  2. 按下 Duplicate/Edit Untitled
  3. 將 Image 從 mysql/mysql-server:5.7 改成 mysql/mysql-server:8.0 Untitled
  4. 按下 Deploy the container,系統會問你是否取代 Untitled

</aside>

Stacks

Stacks 其實就是一個 Docker compose 的集中地,在這邊寫上 Docker compose 的檔案內容後,即可透過 Portainer 管理

  1. 按下 Add stack Untitled
  2. 貼上 docker-compose.yml 的內容,以 wordpress 為例,或按下 Upload 選擇檔案 awesome-compose/compose.yaml at master · docker/awesome-compose Untitled
  3. 如果需要指定環境變數可以在這邊設定 Untitled
  4. 按下 Deploy the stack,就會開始部屬 Untitled
  5. 點進去後,可以看到這個 Stack 的資訊以及他的相關 Container 並加以管理 Untitled
  6. 也可以嘗試連線看看是否有架設成功 Untitled

遠端管理

Portainer 提供在一個站點集中管理多台 Docker 機器的功能,設定方式也非常簡單,選擇一種情境即可。

Agent

使用此方式,這個伺服器的 Port 9001 (預設)需要可以被 Portainer 碰到,設定方式如下:

  1. 在遠端伺服器輸入以下指令架設 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:latest
  2. 在本機的 Portainer 上,進入 Environments 頁,並按下 Add Environment Untitled
  3. 按下 Docker Standalone Untitled
  4. 輸入遠端伺服器的名稱和位址填上遠端伺服器的 IP 和 Port 後,按下 Connect Untitled
  5. 出現新增成功後,回到首頁,就會看到遠端伺服器了 Untitled

Edge Agent

如果遠端伺服器沒辦法隨便開 Port 出來,可以選擇 Edge Agent 反過來讓遠端伺服器主動把設定丟給 Portainer,此時 Portainer 就需要開 Port 8000,設定方式如下:

  1. 如果在啟動 Portainer 時沒有開 Port 8000,請重新啟動:
    1. 停止原有的 container docker stop portainer
    2. 移除原有的 container docker rm portainer
    3. 以 Port 8000 和 Port 9443 重新啟動 Portainer 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
  2. 在本機的 Portainer 上,進入 Environments 頁,並按下 Add Environment Untitled
  3. 按下 Docker Standalone Untitled
  4. 進入這頁,這次選擇 Edge Agent,並填上本機的 Portainer 網址,不能是 localhost Untitled
  5. 按下 Create ,Portainer 會給你一個指令,將他複製到遠端伺服器上 Untitled
  6. 看一下右上角,如果出現 heartbeat 代表有收到資料 Untitled
  7. 回到首頁,就會看到遠端伺服器了 Untitled

更新

更新主伺服器

<aside> 💡 更新時雖然不會丟設定,還是建議備份設定檔

  1. 進入 Settings Untitled
  2. 選擇最底下的 Download Backup 下載目前的設定檔 Untitled

</aside>

  1. 停止原有的 container docker stop portainer
  2. 移除原有的 container docker rm portainer
  3. 下載最新 Image docker pull portainer/portainer-ce:latest
  4. 啟動 Portainer 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 <aside> 💡 如果需要使用 Edge Agent ,請再加上 -p 8000:8000 </aside>

Upgrading on Docker Standalone

更新 Agent

  1. 停止原有的 container docker stop portainer_agent
  2. 移除原有的 container docker rm portainer_agent
  3. 下載最新 Image docker pull portainer/agent:latest
  4. 啟動 Portainer 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

  1. 在本機的 Portainer 上,進入 Environments 頁,進入要更新的 Edge Agent 伺服器,會看到兩比 Key,等會會用到 Untitled
  2. 停止原有的 container docker stop portainer_edge_agent
  3. 移除原有的 container docker rm portainer_edge_agent
  4. 下載最新 Image docker pull portainer/agent:latest
  5. 啟動 Portainer docker 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 的值

Upgrading the Edge Agent

訂閱研究文章

Get updates and learn from the best

More To Explore

Commitizen

前言: 現今軟體功能複雜與龐大,在開發過程中,不管單人開發還是多人協作,對所編寫的代碼與代碼版本管控都是必須的

NFC x Mifare

實作紀錄 readMifare readNdef 知識補充 手機NFC隱含攻擊弱點 掌握原理避免無線盜刷 MI

Scroll to Top