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.pub
和portainer.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.pem
和certs/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 的使用者!