Portainer升級流程記錄

Portainer 是一款廣受歡迎的 Docker 容器管理工具,提供直觀的圖形化界面來管理 Docker 環境。為了確保系統保持最新並獲得新功能,我決定進行升級。本文記錄了完整的升級流程,包括備份、升級和驗證的每一步操作,供日後參考或分享給其他使用者。

環境資訊

  • Portainer 版本:2.19.5(Community Edition)
  • 目標版本:2.27.3
  • 部署方式:Docker 容器
  • 容器名稱portainer-ce
  • 端口映射8000:8000, 9000:9000, 9443:9443
  • 資料portainer_data
  • 操作系統:Ubuntu Linux(基於 Docker 環境)

升級流程

1. 確認目前的環境

在開始升級之前,我先檢查了 Portainer 容器的運行狀態和配置。

  • 使用以下命令查看所有運行中的容器:
docker ps

輸出顯示 portainer-ce 容器正在運行,鏡像為 portainer/portainer-ce:latest,但版本是 2.19.5。

  • 進一步檢查容器詳細配置:
docker inspect portainer-ce

從輸出中確認了以下關鍵信息:

  • 資料:portainer_data 掛載到容器內的 /data 路徑。
  • 端口映射:8000:8000, 9000:9000, 9443:9443
  • Docker 通信:綁定了 /var/run/docker.sock
  • 重啟策略:always

2. 備份 Portainer 資料

升級前,備份資料是至關重要的一步,以防升級失敗導致資料丟失。

  • 使用 alpine 鏡像創建一個臨時容器,將 portainer_data 卷中的資料壓縮成 tar 文件:
docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar -cvf /backup/portainer_backup.tar /data

執行過程中,Docker 自動拉取了 alpine:latest 鏡像,並列出了卷中的文件結構,包括:

  • portainer.db:Portainer 的資料庫文件。
  • certs/tls/:SSL 證書和密鑰。
  • docker_config/config.json:Docker 配置。
  • compose/:Docker Compose 文件。
  • 其他文件如 portainer.pubportainer.key。 備份完成後,當前目錄下生成了 portainer_backup.tar 文件。
  • 確認備份文件是否存在:
ls -lh portainer_backup.tar

3. 停止並移除舊容器

備份完成後,可以安全地停止並移除舊的 Portainer 容器。

  • 停止容器:
docker stop portainer-ce
  • 移除容器:
docker rm portainer-ce

4. 拉取新版本鏡像

我的目標是升級到 2.27.3,因此需要拉取該版本的 Portainer 鏡像。

  • 拉取新版本:
docker pull portainer/portainer-ce:2.27.3

5. 部署新版本容器

使用新版本的鏡像重新啟動 Portainer 容器,並保持與之前相同的配置。

  • 運行新容器:
docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer-ce --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.27.3

這裡保留了原有的端口映射、資料和重啟策略。

6. 驗證升級

部署完成後,進行驗證以確保升級成功。

  • 檢查容器狀態:
docker ps

確認 portainer-ce 容器正在運行,且鏡像版本為 portainer/portainer-ce:2.27.3

  • 訪問 Portainer 網頁界面:
  • 使用 HTTPS 訪問:https://<主機IP>:9443
  • 確認版本已更新為 2.27.3,並檢查功能是否正常,例如容器列表、Docker Compose 項目等。

7. 清理舊鏡像(可選)

升級完成後,我清理了舊的 Portainer 鏡像以節省空間。

  • 查看所有鏡像:
docker images
  • 刪除舊鏡像:
docker rmi <舊鏡像ID>

注意事項

  • 版本兼容性:從 2.19.5 升級到 2.27.3 是一個較大的版本跨度,可能存在不兼容的變更。建議在升級前查看 Portainer 官方的發行說明(可在 https://www.portainer.io 或 GitHub 找到)。
  • HTTPS 設置:我的環境中使用了自定義證書(certs/key.pemcerts/cert.pem)。升級後,Portainer 自動識別了這些證書,HTTPS 訪問正常。如果遇到問題,可以在啟動命令中添加 --tlscert--tlskey 參數手動指定證書。
  • 資料恢復:如果升級失敗,可以使用備份文件恢復資料:
  • 停止並移除新容器:
    docker stop portainer-ce docker rm portainer-ce
  • 恢復資料:
    docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar -xvf /backup/portainer_backup.tar -C /data
  • 使用舊版本鏡像重新啟動:
    docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer-ce --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.19.5

總結

通過以上步驟,我成功將 Portainer Community Edition 從 2.19.5 升級到 2.27.3。整個過程包括備份資料據、移除舊容器、拉取新鏡像、部署新容器以及驗證升級結果。備份是關鍵步驟,確保了資料安全,即使升級失敗也能快速恢復。希望這篇記錄能幫助其他需要升級 Portainer 的使用者!

瀏覽次數:35