ぱんくずリスト

気になる話をちらほらと。

DockerでMinecraftサーバーを建てた

Docker、慣れたら使いやすそうですよね 何番煎じかわかりませんが書いてみました。

やったこと

CentOSにDockerを入れて
Dockerfileを作って
Dockerfileを元に、Dockerコンテナを作って
コンテナを動かす

環境

今回導入した環境です。

ipの固定化や、SSHの設定は省略します。

ポートの解放

minecraftでは、デフォルトで25565番ポートを使用しているのでそこのポート解放します。

# firewall-cmd --zone=public  --permanent --add-port=25565/tcp

解放したポートの確認をする場合
# firewall-cmd --list-all

Dockerのインストール

CentOSにDocker本体をインストールしていきます。
環境によってインストールの方法が異なるっぽいので、

docs.docker.com

を参考にしてください。

前準備

事前に必要なパッケージのインストールと、リポジトリの追加し、yumのパッケージインデックスの更新を行います。

# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum makecache fast

本体のインストール

# yum install docker-ce

これでdockerのインストールできました。
ユーザーでもsudoを使わずにdockerを起動したい場合は以下の設定を行なってください。

usermod -aG docker [ユーザー名]

Dockerfileの作成

Dockerイメージを作成するためにDockerfileを書いていきます。

Dockerfileの各命令について(間違った解釈があったらすいません)

  • FROM … 元となるイメージの指定する、必ず指定する必要がある
  • MAINTAINER … 作者の情報を記述する。
  • EXPOSE … 解放したいポート番号を指定する。
  • RUN … 作成するイメージ上で実行する(シェル or exec)形式のコマンドを指定する。パッケージのインストールなどでよく使用する。
  • WORKDIR … 作業ディレクトリを変更する。RUNでcdコマンドを使っても作業ディレクトリは変わらないのでこちらの命令で変更する必要がある。
  • CMD … コンテナを実行するときに、デフォルトで起動するコマンドを指定する。Dockerfile内に1つだけ指定でき、複数個CMDがあった場合1番最後のCMD命令が実行される。
# Dockerfile

FROM centos:centos7
MAINTAINER pankuz

## 25565 port enable (minecraft default port)
EXPOSE 25565

## install package
RUN yum update && yum install -y vim java-1.8.0-openjdk wget

## download minecraft server image
## server image download url => https://mcversions.net/
RUN mkdir /minecraft
WORKDIR /minecraft
RUN wget  -q "https://launcher.mojang.com/mc/game/1.12.1/server/561c7b2d54bae80cc06b05d950633a9ac95da816/server.jar"


## start minecraft server
CMD echo eula=true > /minecraft/eula.txt && java -jar server.jar nogui

Dockerイメージ、コンテナの作成

Dockerfileからイメージを作成するには、docker buildコマンドを使用します。

Dockerfileがあるディレクトリに移動してから実行してください。
# docker build -t minecraft .

buildが終わったら、イメージからコンテナ起動します。

# docker run --name minecraft -i -p 25565:25565' minecraft

エラーがでなければ、マイクラサーバの起動成功しました。
問題がなければクライアントからサーバのアドレスにアクセスできるはずです。

コンテナサーバの起動、停止

コンテナを操作するには、コンテナ名かコンテナIDが必要なので、それの確認を行います。

起動しているコンテナを確認するとき
# docker ps

起動していないコンテナも含めて確認するとき
# docker ps -a

コンテナの起動

docker start [コンテナ名 or コンテナID]

記事の通りに作成していれば次のコマンドで起動できます
# docker start minecraft

コンテナの停止

起動するときとやることはほとんど同じです

# docker stop minecraft

参考サイト

Dockerfile リファレンス — Docker-docs-ja 17.06.Beta ドキュメント

Dockerfileのコマンド - Qiita

Dockerを使ってminecraftサーバを作ろう!(1/2) |