アップデートは突然に
自分の所では、CentOS 7 + Docker + portainer で運用しているのですが、portainer が 1.24.1 から 2系へとアップデートしました。正直、何が変わったのかチェックしていないのですが(笑)、とりあえずアップデートしてみようと思います。
このアップデートに関して、日本語の情報がほぼなかったので有用かなと思いまして。
ざっくりいうとデストロイ&ダウンロード
簡単に流れを説明しますね
- 元のデータを念の為バックアップ
- docker で portainer を stop して rm する
- docker run で portainer-ce をオプション付きで起動する (コンテナは自動でダウンロードされる)
- docker start portainer で起動する
- 管理画面からログインしてデータを確認
こんな感じです。 portainer のデータは別のディレクトリに保存されているので、Docker 上で動作している portainer を削除してインストールし直せば、自動的に元のデータを参照するのでアップデートが完了するという訳です。
それでも rm するのは怖いですけれどね。
古いバージョンを削除する
まず既存の portainer を確認します。
docker-sv01@~/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
459c42ea74e8 portainer/portainer "/portainer" 2 weeks ago Up 2 weeks 0.0.0.0:9000->9000/tcp portainer
docker-sv01@~/# tar zcvf ~/portainer_data.tar.gz /var/lib/docker/volumes/portainer_data
自分は、/var/lib/docker/volumes/portainer_data 以下にデータを保存していたので、まずはこれをバックアップして後々何かあった時には、1.24.1 に戻せるようにします。
docker-sv01@~/# docker stop 459c42ea74e8
459c42ea74e8
docker-sv01@~/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker-sv01@~/# docker rm 459c42ea74e8
459c42ea74e8
ちょいとはしょりますが docker で 459c42ea74e8 という CONTAINER ID で動作していたので、これを停止して ps 上に残らなくなったら、容赦なくrm します。これで、1.24.1 は消えました。
新しいバージョンをインストールする
消えたので、今度は新バージョンのインストールを行います。注意するのは、データの参照パスを間違えない事です。
docker-sv01@~/# docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Unable to find image 'portainer/portainer-ce:latest' locally
latest: Pulling from portainer/portainer-ce
94cfa856b2b1: Pull complete
49d59ee0881a: Pull complete
527b866940d5: Pull complete
Digest: sha256:5064d8414091c175c55ef6f8744da1210819388c2136273b4607a629b7d93358
Status: Downloaded newer image for portainer/portainer-ce:latest
aa74378ccfdcff7732646a56923063f9233db4fef0eeb2f1f80b18da9e6e914e
portainer/portainer-ce をインストールする事、そして、portainer_data:/data というオプションを付け忘れると痛い目に合います。この後者のパスは先程バックアップしたパスと同一にしてください。起動名は –name portainer と1.24.1 と同一にしています。
docker-sv01@~/# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa74378ccfdc portainer/portainer-ce "/portainer" 23 seconds ago Up 23 seconds 8000/tcp, 0.0.0.0:9000->9000/tcp portainer
docker-sv01@~/# docker start portainer
portainer
インストールが完了したので、そのまま起動します。(というかdocker run したので起動していますね、たぶん)
最終確認

ログインした所、既存のデータも残ったまま 2.1.1 にアップデートできました。とても簡単ですね。簡単にアップデートできるのも Docker の良い所だと思います。