shipyard? DockerUI?
Dockerでの運用を考えた際に、コンテナの監視は必要になるだろう。
監視もいろいろあると思うが、今回はwebUIつきでいいのないかなと探した
候補はこの2つが上がった
もう一つ、docklandというのもあがったのだが、残念ながらもうコミットしていないっぽいので、除外した
DockerUI
githubのREADME.mdのContainerQuickstartに従う
docker build -t crosbymichael/dockerui github.com/crosbymichael/dockerui
docker run -d -p 9000:9000 -v /var/run/docker.sock:/docker.sock crosbymichael/dockerui -e /docker.sock
上記コマンドを監視したいコンテナ郡を持つDocker Hostで実行する事で、そのDockerHostの持つコンテナの状態を監視することが出来るようになる
なんでbuildせにゃあかんのやと思ってDockerの公式リポジトリを見たら、執筆時現在(2014/06/09)、最終コミットが3ヶ月前になっているので、一応buildすることにした。もっとDockerhubが活用される世界になったらいいと思います
runさせる
docker run -d -p 9000:9000 -v /var/run/docker.sock:/docker.sock crosbymichael/dockerui -e /docker.sock
9000番ポートでWebサーバが立ち上がります。Playframeworkで9000番使っちゃってるので、9500:9000
として公開する。
これで、同じサーバのコンテナの状態が監視できるようになります
Shipyard
githubや公式サイトの通りにインストールする
まず、/etc/default/docker.io
に
DOCKER_OPTS='-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock'
これを追加し、Docker Daemonを再起動する。
その後docker run -i -t -v /var/run/docker.sock:/docker.sock shipyard/deploy setup
を叩く
このコマンドがかなり感動的で、叩いたらWebアプリケーション、MySQL、Redis、LBそれぞれのコンテナが立ち上がってアプリケーションが立ち上がる
勝手にアプリケーションが立ち上がってくれるのもそうだけれど、MySQLやRedisなどのサーバソフトウェアを躊躇なく使えるようになった、コンテナ時代を感じさせる。
これでアプリケーションは立ち上がるが、Shipyardは一つのアプリケーションで多くのDocker hostを監視するため、エージェントと呼ばれるものを、監視対象のDockerホストにインストールする必要がある。
公式サイトではいろいろやれって言われるが、
docker run -i -t --rm -v /var/run/docker.sock:/docker.sock -e URL=http://<shipyard-host>:8000 -p 4500:4500 shipyard/agent
このコマンドを監視したいサーバで実行してコンテナを立てればOK
もちろん、ネットワークの疎通がないとダメです。(僕はこれで1時間くらい悩みました……)
特徴
本当は、SSとかとって紹介すべきだったけれど、この記事を仕上げている段階では立ち上げたサーバにアクセス出来ない状態だったので文章で。
DockerUIは閲覧性にはある程度優れているかなと思った。コンテナ一覧でどのコンテナがstartしてて、どのコンテナがstopしてるか観やすかった。それだけ。
Shipyardは、多数のサーバが登録できるけれど、たくさんのホストを登録すると閲覧性が悪くなる。かつ、コンテナ一覧のところでコンテナの状態が見られないのが辛い。しかし提供される情報量は多分一番多いし、ツールからコンテナイメージをbuildしたりrunさせたりも出来た。
現在元気なのはShipyardで、僕はこっちに期待しているけれど、いま現在だと運用には耐えない気がする。今後に期待しよう