Minecraftコンテナをアップデートした時のメモ
2021年末から話題となっているJava-Log4jライブラリの脆弱性対応ですね。
外には接していないローカルサーバなのですが、穴を放置するのは精神衛生上よくないのでコンテナ環境を緩和版に更新しました。素行の悪いModが紛れ込んだりすると厄介ですし。
手続きとしては家庭内Minecraftサーバへログインして下のような感じで行いました。
1) 実行中のコンテナを停止
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c99bde1fe6f e416bf36a807 "/start" 2 weeks ago Up 8 days (healthy) 0.0.0.0:25565->25565/tcp, :::25565->25565/tcp, 25575/tcp mc1181
$ docker stop 4c99bde1fe6f
docker ps -a コマンドで止めたいコンテナIDを調べてから、docker stop コマンドで停止させます。
2) 停止したコンテナを削除
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c99bde1fe6f e416bf36a807 "/start" 2 weeks ago Exited (0) About a minuteago mc1181
$ docker rm 4c99bde1fe6f
4c99bde1fe6f
停止させた古いコンテナは不要なのでコンテナIDを指定して削除します。
3) DockerPullで新しいイメージの取得
$ docker pull itzg/minecraft-server
DockerHub からMinecraftのコンテナを取得します。既存イメージがある場合には差分が更新されるようです。
4) コンテナを再起動
$ docker run -d -it -v /home/mc/1180:/data -p 25565:25565 -e EULA=TRUE --name mc1181 itzg/minecraft-server
docker pull で取得されたイメージをもとにコンテナを再起動させます。
ワールドデータはコンテナとは別に保存しているので、このパスを指定してコンテナを起動することでワールドデータを引き継いだ形でコンテナで起動できます。
思ったよりも簡易に更新できた…
とはいっても、コマンドで制御するのは何かと不便。そうしたところをケアしてくれるツールを導入してみたいと思う今日この頃。