Dockerでマイクラサーバーをサクッと立てる
ひでまるブログ

Dockerでマイクラサーバーをサクッと立てる

article cover

ひでまる

2023/05/06に公開

先日Docker でマイクラサーバーを立てたのでメモとしてここに書き残します。

必要なもの

  • Dockerが動くパソコン

Docker とはなんぞや

この記事を開いた方はDockerをすでにご存知だと思います。
それでも定義を確認したいのでChatGPT 先生に聞いてみました。

Docker は、コンテナ仮想化技術を用いたアプリケーション実行環境を提供するオープンソースのプラットフォームです。
Docker を使うことで、アプリケーションやサービスを実行するための環境を、軽量で簡単に作成・管理できます。
コンテナとは、アプリケーションを実行するために必要なすべてのライブラリや依存関係、設定ファイルなどを含めた環境を、独立した単位でパッケージ化したものです。
このコンテナ技術を使うことで、アプリケーションが異なる環境で実行される際に発生する互換性の問題を解決することができます。

要するにコンテナで動作が保証された環境を動かすことができます。

インストール

これからDockerをインストールします。Dockerは古いと困りますので、公式リポジトリからインストールしてくださいね。

Terminal window
# as root user
dnf -y install dnf-plugins-core
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker.service
systenctl status docker.service

これはAlma Linux向けのセットアップっとなっております。UbuntuやDebianなどその他のOSをご利用になられる方は公式ドキュメントをご参照ください。

Install
Learn how to choose the best method for you to install Docker Engine. This client-server application is available on Linux, Mac, Windows, and as a static binary.
Install favicon https://docs.docker.com/engine/install/
Install

サーバーを立てる

今回は Docker Compose を使ってサーバーを立てようと思います。
Docker Image はitzg/docker-minecraft-serverを使おうと思います。

GitHub - itzg/docker-minecraft-server: Docker image that provides a Minecraft Server for Java Edition that automatically downloads selected version at startup
Docker image that provides a Minecraft Server for Java Edition that automatically downloads selected version at startup - itzg/docker-minecraft-server
GitHub - itzg/docker-minecraft-server: Docker image that provides a Minecraft Server for Java Edition that automatically downloads selected version at startup favicon https://github.com/itzg/docker-minecraft-server
GitHub - itzg/docker-minecraft-server: Docker image that provides a Minecraft Server for Java Edition that automatically downloads selected version at startup

Minecraft サーバーソフトウェアについて

Minecraft のサーバーにはいくつか種類があって、例えば Bukkit、Spigot、PaperMC なんかが有名どころですね。Mod サーバーなら Forge や Fabric もあったりします。

これから使用するDockerイメージのitzg/docker-minecraft-serverはこれらのサーバーソフトウェア全てに対応してるところが非常に好印象です。

この記事では PaperMC を使用することとして、書かせていただこうと思います。

こちらの記事では前述の通りに PaperMC を使用していますが、他のサーバーソフトウェアを利用する場合でも、基本的な構築方法に違いはありません。そのため、BukkitFabric を使用する場合でも、同様の手順で構築できます。

Docker Composeを使おう

Docker Composeの定義はご存知だと思いますが、例のごとくChatGPTに聞いちゃいます。

Docker Compose は、複数のコンテナを簡単に管理・起動できる Docker のオーケストレーションツール です。通常、Docker でコンテナを作成する際は docker run コマンドを使いますが、複数のコンテナを連携させる場合、個別に設定や起動を行うのは手間がかかります。Docker Compose を使うと、設定ファイル(docker-compose.yml)を用意するだけで、複数のコンテナを一括で管理・起動 できます。

つまり、弁当箱みたいなものです。
普通に Docker でコンテナを動かすのは、おかずを一品ずつタッパーに入れて持ち運ぶようなもの。
でも、Docker Composeを使うと、docker-compose.yml という「弁当箱」に必要なおかず (コンテナ) をまとめて詰められます。便利ですねー

いつも通りのエディターで docker-compose.yml を作ります。大詰めvimはフライパンといったところでしょうか。

Terminal window
vim docker-compose.yml
  • PaperMC Example
docker-compose.yml
version: "3.8"
services:
mc:
image: itzg/minecraft-server
container_name: paper
environment:
EULA: "true"
TYPE: PAPER
VIEW_DISTANCE: 10
MEMORY: 2G
ports:
- "25565:25565"
volumes:
- ./data:/data
restart: unless-stopped

環境変数について

環境変数でサーバー設定をカスタムできます。特にこだわりがなければMEMORYVIEW_DISTANCEの値を変更するだけで問題ないです。

  • MEMORY: メモリサイズです。お好みに合わせて変更してください。
  • VIEW_DISTANCE: 描画距離についてです。値を低くすればサーバーが軽くなります。

環境変数について、詳しく知りたい場合は公式ドキュメントをご参照ください。

docker-minecraft-server/README.md at master · itzg/docker-minecraft-server
Docker image that provides a Minecraft Server for Java Edition that automatically downloads selected version at startup - itzg/docker-minecraft-server
docker-minecraft-server/README.md at master · itzg/docker-minecraft-server favicon https://github.com/itzg/docker-minecraft-server/blob/master/README.md#server-configuration
docker-minecraft-server/README.md at master · itzg/docker-minecraft-server

おおかた設定はできたので、サーバーを起動します。

Terminal window
docker compose up -d

Compose の構成を変更した場合は毎回up -dしてください。

マイクラを起動して、サーバーに入ってください

ローカルで立ち上げたなら、localhost:25565に接続すればサーバーに入れます

Other articles