はじめに
- 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
とか)が指定出来ない