hidemium's blog

日々学んだことをアウトプットする。

ShipyardでDockerのWebUIを構築してみた

Dockerでどのようなコンテナが起動しているか、コンテナの状態を確認するためにWebUIを提供するツールがいくつか開発されています。今回は、Shipyardをインストールし、コンテナの状態がどのように確認できるのか試してみました。

構成

  • Ubuntu 14.04
  • Docker 1.3.0
  • Shipyard 2.0.3

Shipyardのインストール

Dockerデーモンの外部接続を許可する必要があるので、/etc/default/dockerのDOCKER_OPTSに以下の内容を追加します。

$ vi /etc/default/docker
DOCKER_OPTS='-H tcp://0.0.0.0:4243/ -H unix:///var/run/docker.sock'

設定を反映させるため、Dockerを再起動します。

$ service docker restart

ShipyardはRethinkDBという分散データベースを使用しているので、こちらをインストールします。上のコマンドは、RethinkDB用のデータ格納コンテナ、下のコマンドはRethinkDBコンテナを起動しています。

$ docker run -it -d --name shipyard-rethinkdb-data --entrypoint /bin/bash shipyard/rethinkdb -l
$ docker run -it -P -d --name shipyard-rethinkdb --volumes-from shipyard-rethinkdb-data shipyard/rethinkdb

Shipyardコンテナを起動します。今回はソケット通信によりホストの情報を取得するため、「-v /var/run/docker.sock:/docker.sock」を追加します。

$ docker run -it -v /var/run/docker.sock:/docker.sock -p 8080:8080 -d --name shipyard --link shipyard-rethinkdb:rethinkdb shipyard/shipyard

これらのコマンドを実行すると、DockerHubからイメージを取得して、コンテナを起動してくれます。※なお、Shipyard 2からはAgentは不要になったようです。

ブラウザから、以下のアドレスにアクセスすると、ShipyardのWebUIに接続することができます。

http://<your-host-ip>:8080

f:id:hidemium:20141026191535p:plain

デフォルトでユーザ名「admin」、パスワード「Shipyard」でログインできます。

Engineの追加

初回ログイン時はDockerのホスト情報が登録されていないので、登録を行います。
「Engines」タブをクリックして、「ADD」ボタンをクリックします。
Name、Label、CPUs、Memoryは任意の値を入力し、Addressに「unix:///docker.sock」を入力し、「ADD」ボタンをクリックします。

f:id:hidemium:20141026195815p:plain

登録ができると、以下のようにホスト情報が表示されます。

f:id:hidemium:20141026195853p:plain

Containerの操作

設定に問題がなければ、「Containers」タブをクリックすると、以下のように起動中のコンテナの一覧が表示されます。また、コンテナをUIから起動する、「Deploy」ボタンが用意されています。

f:id:hidemium:20141026195934p:plain

WebUIを提供しているshipyard/shipyardのコンテナをクリックすると、以下のように表示されます。restart、stop、destroy、scaleといったボタンが用意されています。

f:id:hidemium:20141026200105p:plain

コンテナの一覧画面に戻って、「Deploy」ボタンをクリックすると、以下のような画面になります。Dockerのイメージ名やホスト名、CPUやメモリのリソースの制限について設定することができます。

f:id:hidemium:20141026200114p:plain

Dashbordの操作

EngineとContainerで設定した値を元に、CPUやメモリのリソースの利用状況を円グラフで表示してくれます。
※Dockerが稼動しているサーバのCPU使用率やメモリ使用率をリアルタイムで表示するものではないようです。(このあたりの仕様はまだよく分かってません。)

f:id:hidemium:20141026200123p:plain

おわりに

通常コンテナの状況はCUIベースで確認していますが、複数ユーザでどのようなコンテナが起動しているか確認するにはShipyardがあると便利かと思います。ただ、WebUIベースで細かなことするにはまだまだ難しいかもしれません。