ようへいの日々精進XP

よかろうもん

dockerui を試す

はじめに

  • docker の UI ツールがあったのを思い出したので使ってみる
  • いくつか種類があるが今回は dockerui を試す
  • docker のコンテナとして配布されているもので試してみる

参考


dockerui とは


セットアップ

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/dockeruidocker 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)で APIURL を渡しているのがキモで 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

現在、稼働中のコンテナやホスト全体のサマリが表示されている。

f:id:inokara:20131012060407p:plain

Containers

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

f:id:inokara:20131012060419p:plain

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

f:id:inokara:20131012061455p:plain

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

f:id:inokara:20131012061424p:plain

Images

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

f:id:inokara:20131012064244p:plain

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

f:id:inokara:20131012062231p:plain

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

f:id:inokara:20131012062941p:plain

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

f:id:inokara:20131012062956p:plain

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

f:id:inokara:20131012063139p:plain

Containers で確認する。

f:id:inokara:20131012063318p:plain

上記のようにコマンドが実行されて Exit 0 で終了している。


最後に

  • セットアップも簡単でシンプルで使いやすかった
  • 作成したコンテナを tag をつけてる機能まであるが試してない
  • docker remote API を利用しているので API のバージョンが上がれば色々と機能は増えていくはず

気になる点

  • docker run に渡すコマンドは指定出来るけど docker run のコマンドオプション(例えば -i-t とか)が指定出来ない