仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

Minecraftに釣られて始めるDocker入門

今朝ごろからTwitter上でDockerCraftなるものが話題のようです。Dockerがリリースした、Minecraft上でDockerコンテナのステータスが確認できるものだとか。

実は私、今までなんとなくDockerを避けてきたのですが、ネザーで天井の岩盤から床の岩盤までぶちぬいてゾンビピッグマントラップタワーを建設している程度にはMinecraft好きですので、これはDocker入門せざるを得ません。早速、Docker入門を兼ねて動かしてみました。

Docker環境の用意

社内にある普段使い用のOpenStackにUbuntu14.04のインスタンスをさくっと立て、ドキュメントを参照しながらDockerをインストールしました。

https://docs.docker.com/v1.8/installation/ubuntulinux/

一般ユーザーでdockerコマンドを実行できるようにするのを忘れずに。

ubuntu@dockercraft:~$ sudo usermod -aG docker ubuntu

DockerCraftの導入

GitHubのREADME.mdを読みながら作りました。Minecraftの用意は割愛します。

https://github.com/docker/dockercraft

docker pullを実行すれば良いと書かれていましたが、何やら失敗してしまったので、もう一つの方法であるgit cloneを実行しました。

(失敗した)
ubuntu@dockercraft:~$ docker pull dockercraft
Using default tag: latest
Pulling repository docker.io/library/dockercraft
Error: image library/dockercraft:latest not found

(以下の手順で用意)
ubuntu@dockercraft:~$ git clone https://github.com/docker/dockercraft
ubuntu@dockercraft:~$ docker build -t dockercraft dockercraft

実行はドキュメント通りです。

ubuntu@dockercraft:~$ docker run -t -i -d -p 25565:25565 \
-v /var/run/docker.sock:/var/run/docker.sock \
--name dockercraft \
dockercraft

DockerCraftに接続する

Minecraftを起動してAdd Serverします。

サーバー情報

接続すると、白い羊毛の上に青い建物が1つだけ立っているワールドに立ちます。青い建物が外つのコンテナを表していて、これはDockerCraftのコンテナです。

コンテナの外観

建物の中に入ると、コンテナのStart/Stopがレバーで操作できたり、docker rmに相当するボタンが用意されています。建物の外壁には、コンテナ名・CPUとメモリの使用率が看板で表示されています。

コントロールルーム?

DockerCraftのコンテナをStopすると、サーバーから切断されることになるので、他にもなにかコンテナを立ててみます。

他にもコンテナを立てる

簡単そうなものでパッと思いついたのがWordPressだったので、WordPressを立ててみます。MySQLとWordPressをそれぞれ展開すれば良いようです。

Minecraftにログインしたまま、MySQLを展開します。

ubuntu@dockercraft:~$ docker run --name testmysql -e MYSQL_ROOT_PASSWORD=loveminecraft -d mysql

MySQLコンテナがワールド上に増えました。

コンテナが2つになったようす

続けてWordPressも展開します。-pオプションで、ポートを指定できるようです。8080ポートでWordPressを開けるようにしてみます。

ubuntu@dockercraft:~$ docker run --name testwordpress --link testmysql:mysql -p 8080:80 -d wordpress

WordPressコンテナも増えました。コンテナが増えてくると壮観ですね。

コンテナが3つになったようす

もちろんですが、この時点でWordPressがhttp://:8080のURLで利用できるようになりました。簡単ですね。

Dockerで展開したWordPress

MySQLとWordPressのコンテナを、レバーを使って停止しました。

停止したコンテナ

コマンドで確認してもちゃんと停止していますね。

ubuntu@dockercraft:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                      NAMES
25f4be66495c        wordpress           "/entrypoint.sh apach"   7 minutes ago       Exited (0) 56 seconds ago                              testwordpress
78ad03e00084        mysql               "/entrypoint.sh mysql"   9 minutes ago       Exited (0) 51 seconds ago                              testmysql
58500b0d7243        dockercraft         "/bin/bash /srv/start"   17 minutes ago      Up 16 minutes               0.0.0.0:25565->25565/tcp   dockercraft

最後はWordPressコンテナーを建物内のボタンで削除します。ボタンをポチッとすると建物が消えますが、なぜか看板1個とレバーだけがアイテム化します。

コンテナを消したところ

いろいろ(よくわからずに)動かしていると、コマンドとMinecraftのワールドで情報の整合性が取れなくなって同じコンテナが2つ生えたりしてしまうような怪しいところも見てしまいましたが、そもそもDockerCraft自体の実用性を考えると、深く気にしてはいけない気もしました。

オチ

羊毛の白い床はコンテナを増やすと増えますが、空に浮かんだ雲のような状態なので、他に地面も何もありません。誤って転落すると奈落に落ちて死んでしまうので要注意です。

落ちると死ぬ

というわけで、マイクラで遊びながらDockerCraftを通じてDockerを触っているうちに、WordPressを展開して起動停止ができるくらいにはDockerが触れるようになりました。めでたし(ただし、上司に後ろから肩をつつかれますので、検証時にはいつ肩を突かれても冷静に解説できるように気をつけてくださいネ)。