今朝ごろから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コンテナがワールド上に増えました。
続けてWordPressも展開します。-pオプションで、ポートを指定できるようです。8080ポートでWordPressを開けるようにしてみます。
ubuntu@dockercraft:~$ docker run --name testwordpress --link testmysql:mysql -p 8080:80 -d wordpress
WordPressコンテナも増えました。コンテナが増えてくると壮観ですね。
もちろんですが、この時点でWordPressがhttp://
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が触れるようになりました。めでたし(ただし、上司に後ろから肩をつつかれますので、検証時にはいつ肩を突かれても冷静に解説できるように気をつけてくださいネ)。