見出し画像

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 で取得されたイメージをもとにコンテナを再起動させます。
ワールドデータはコンテナとは別に保存しているので、このパスを指定してコンテナを起動することでワールドデータを引き継いだ形でコンテナで起動できます。

思ったよりも簡易に更新できた…
とはいっても、コマンドで制御するのは何かと不便。そうしたところをケアしてくれるツールを導入してみたいと思う今日この頃。