Docker Universal Control PlaneでDockerのエコシステムをGUIで管理する
Docker Universal Control Planeとは?
Docker Universal Control PlaneはDocker社のエコシステムのGUIによる管理を実現させるDocker社純正のツールである。昨年まではプロジェクトネームOrca
の名で開発が進められてきたが、DockerCon EU2015でDocker Universal Control Planeに(以下UCP)統合される旨が告げられた。
UCPの哲学は開発チームと運用チームがコンテナベースのアプリケーションの開発、デプロイ、運用を本番環境で可能にさせることである。Dockcer Swarmによるコンテナのクラスタリングとオーケストレーションを始めとして、Docker Engine, libnetwork, volume, netowrk plugin, Registry, Composeが既にUCPから操作できる。また、コンテナのScale upもボタンを1つで実施できる。これまで開発されてきたDockerエコシステムをUCPから簡単に操作可能になったのだ。
2015年12月11日現在UCPはBetaリリースされている[1]。
なぜUCPを使うのか?
DockerのAPIを叩いてコンテナの管理をするGUIはこれまでにも幾つかある。その中でも、UCPを使って良いなーと思ったのは以下の点。
- 説明不要な直感的なUIを持っている
- Dockerエコシステムのための統合GUIなのでDockerシステムと相性が良い
- プロダクション環境での利用を意識した設計
Dockerのエコシステムと相性が良いのは言わずもがなかな。Docker社内で開発の連携が出来る分ツール間の親和性や新ツール追従の開発スピードは他を圧倒するだろう。
UIも秀逸だ。VMWare,CloudStack,OpenStackと様々な仮想化環境のラッパーとなるソフトウェアとそのGUIを触ってきたが、その中でも一番シンプルでわかりやすい。
また、HA構成による可用性やLDAPやActiveDirectoryとの連携によるアカウント管理、オンプレミスでのデプロイが可能なことなど本番環境での運用に対する配慮が初期から垣間見られる。開発も運用も大事にしたいという意識が感じられて本当に素晴らしい。
UCPを使ってみる
実際にUCPを使ってどんなことが出来るか確認する。UCPにアクセスするとログイン画面が出る。
ログインするとUCPがコントロールしているシステム全体のサマリーが表示される。
メニューを開くとDashboard、Applications、Nodes、Network、Images、Account、Settingの項がある。
Applications以降の項について何が出来るか確認する。
Containers(Engine,volume,network)を使ってみる
Containersではコンテナの状態確認や操作(デプロイ、起動、停止、スケールアップ)ができる。
試しに1つredisのコンテナを立ててみる。
コンテナ名やコンテナ作成に使うImageを指定したが、他にもContainer config, Environment, Network, Volumes, Constraintsが設定でき、Dockerコマンド経由で出来ることは大体出来る印象。
Docker Registryにredisのイメージが無いので初回はDocker HubからImageの取得が行われる。Imageの取得が終わると数秒でredisコンテナが起動する。
起動後はコンテナの詳細確認出来たり、
コンテナのログをみたり、コンソールでコンテナの操作をしたりできる。redisのコンテナなのでいつものredisのログが確認できる。
また、Scaleボタンをクリックするとコンテナのスケールアップが実行される。但し、スケールアップしたコンテナの名前はランダムで決定されてしまう。
Images(Registry)を使ってみる
Imagesでは管理しているImage一覧が表示される。先ほどDocker Hubから取得したredisのImageも登録されている。
Nodes(Swarm)を使ってみる
Nodesを開くとクラスタを形成しているノード確認できる。今回は単一ノードで検証をしているので複数ノードでクラスタを形成した時の動作は後日追記する。
Network(libnetwork)を使ってみる
NetworkではDockerが管理しているネットワーク情報が確認できる。
ネットワークも作れる。
Applications(Compose)を使ってみる
Applicationsではdocker-compose up
で起動するコンテナ群を管理出来る。ただし、初回のdocker-compose up
に相当する操作はUCPからは出来ないようなので以下のdocker-compose.ml
を使って起動した。
rproxy:
image: jwilder/nginx-proxy:latest
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
db:
image: postgres:9.5
environment:
- POSTGRES_PASSWORD=secret
- POSTGRES_USER=redmine
redmine:
image: redmine:2.6.8
links:
- db
environment:
- VIRTUAL_HOST=redmine.example.com
volumes:
- /srv/docker/redmine/redmine:/home/redmine/data
UCPにアプリケーションが1つ増える。また、詳細を確認するとアプリケーションを構成するコンテナが現れ、それぞれを操作出来る。
一度アプリケーションを作成すると、UCPからそれらの起動、停止が可能になる。
便利!
終わりに
検証項目とか作ってテストしたわけじゃないので直感的にだが、Beta版といえ完成度は高い印象をうけた。また、冒頭でも述べたがUIがかなりシンプルでやりたい操作が自然と出来る。OpenStackのHorizonと比べてシンプルでいい。あれはなんかごちゃっとしてるんだよね。この辺はクラウドサービスの開発、運用をDotCloud時代からしているので、ノウハウが溜まっているからだろうか、流石である。とはいえ、マルチテナンシーのサポートなど欲しい機能はまだある。その辺りは、今後に期待したい。これから、UCPも使ってDockerのエコシステムを中心とした本番環境と開発環境の運用をしていこうと思う。
参考
公式
[1] UCPは現在Betaテスト中でありますが、本ブログに記載されている内容、写真等につきましてはDocker社の方から掲載の許可を頂いております。 This is an article that Docker,Inc. accepted to share UCP info. Thank Michael, Chris and Betty :)