はじめに
- docker の UI ツールがあったのを思い出したので使ってみる
- いくつか種類があるが今回は dockerui を試す
- docker のコンテナとして配布されているもので試してみる
参考
dockerui とは
- リポジトリはこちら
- dotcloud の Michael Crosby さんが作られている
- go をはじめ Angular.js や Flatstrap 等で実装されている
- docker remote API 利用する
- 詳細は README を確認すること
セットアップ
README に詳しく書かれているのでそちらを参照するのが良い。
試した環境
- ホストは
Ubuntu 13.04 - docker のバージョンは
0.6.2(すでに0.6.3も出ている)
docker Remote API を使えるようにする
デフォルトでは docker remote API はローカルホスト以外からのアクセスは出来ないようになっているので /etc/init/docker.conf を以下のように修正して docker を再起動する。
--- docker.conf.orig 2013-10-12 05:44:58.851649839 +0900 +++ docker.conf 2013-10-12 05:45:07.691649532 +0900 @@ -6,5 +6,5 @@ respawn script - /usr/bin/docker -d + /usr/bin/docker -d -H=tcp://0.0.0.0:4243/ -api-enable-cors end script
再起動は sudo stop docker してからの sudo start docker が確実。念の為、API にアクセス出来るかを確認してみる。
curl -X GET http://xxx.xxx.xxx.xxx:4243/containers/json?all=1 | python -mjson.tool
以下のように JSON で返ってくれば API は利用可能。この場合の URL 部分はホストの IP でもアクセス出来る。
[ { "Command": "./dockerui -e=http://xxx.xxx.xxx.xxx:4243", "Created": 1381523555, "Id": "67b46bb2a95e3013c5699e897003a9b789cd35fce32ba414ef0c2c9c4889a51c", "Image": "crosbymichael/dockerui:latest", "Ports": [ { "PrivatePort": 9000, "PublicPort": 49156, "Type": "tcp" } ], "SizeRootFs": 0, "SizeRw": 0, "Status": "Up 17 minutes" } ]
dockerui のコンテナイメージを pull する
以下のように crosbymichael/dockerui を docker pull してくる。
docker -H=tcp://0.0.0.0:4243/ pull crosbymichael/dockerui
尚、今後は上記のように docker コマンドを投げる際には -H=tcp://0.0.0.0:4243/ が必要になるので注意する。(本当にこの方法で正しいかは引き続き確認しよう)
docker run する
以下のようにしてコンテナを起動する。
docker -H=tcp://0.0.0.0:4243/ run -d crosbymichael/dockerui -e="http://xxx.xxx.xxx.xxx:4243"
-e オプション(-e=[]: Set environment variables)で API の URL を渡しているのがキモで crosbymichael/dockerui から API にアクセス出来るようになる。
起動後に docker ps で確認してみる。
ID IMAGE COMMAND CREATED STATUS PORTS 67b46bb2a95e crosbymichael/dockerui:latest ./dockerui -e=http:/ 22 minutes ago Up 22 minutes 49156->9000
この状態でホストの 49156 ポートがコンテナ内のアプリケーションサーバーの 9000 ポートにバインドされている状態なのでブラウザからは以下のようにアクセスすることになる。
http://${ホストの docker0 の IP}:49156/
使ってみる
早速、http://${ホストの docker0 の IP}:49156/ にアクセスする。
Dashboard
現在、稼働中のコンテナやホスト全体のサマリが表示されている。

Containers
現在、稼働中のコンテナの詳細情報(起動コマンド)が表示されている。

コンテナの ID をクリックするとコンテナの詳細を確認することが出来る。

また Action メニューからコンテナの停止や開始等を選択することが出来る。

Images
ホスト上のコンテナイメージの一覧が表示される。

ID をクリックするとコンテナイメージの詳細を確認することが出来る。

create をクリックして任意のコンテナを作成し起動することも出来る。

Cmd: に任意のコマンドを入力する。コマンドは ["command","command の引数"] という書式で記入する。

Create をクリックすると以下のように表示される。

Containers で確認する。

上記のようにコマンドが実行されて Exit 0 で終了している。
最後に
- セットアップも簡単でシンプルで使いやすかった
- 作成したコンテナを
tagをつけてる機能まであるが試してない - docker remote API を利用しているので API のバージョンが上がれば色々と機能は増えていくはず
気になる点
docker runに渡すコマンドは指定出来るけどdocker runのコマンドオプション(例えば-iと-tとか)が指定出来ない