注目すべきDockerの周辺技術 PanamaxとKubernetes
前回の記事では、Dockerを使いやすくする様々なツールが開発されており、その中でも特に注目を集めているものとして、CoreOSを紹介した。今回は、Dockerの周辺技術の中から、PanamaxとKubernetesを取り上げ、紹介しよう。
機能強化ツール、コンテナ管理ツール、コンテナ向け軽量OSに分類したDockerの主要周辺技術のリストを再掲しておく。
ツール名 | 提供ベンダー | 公式URL | 概要 |
---|---|---|---|
機能強化ツール | |||
Kubernetes | https://github.com/GoogleCloudPlatform/kubernetes | Googleと各社が協力して制作されているDockerコンテナのクラスタリングを主な機能としたオーケストレーションツール。様々な概念が追加されており、これからの開発に期待が集まっている | |
GearD | Red Hat | http://www.projectatomic.io/ | Atomicプロジェクトの一部だが、独立しているため単体での利用が可能。Systemdの連携やコンテナ内のプライベートネットワークサポート、複数コンテナ連携向けのAPI等を提供する機能強化ツール |
Pipework | Jérôme Petazzoni | https://github.com/jpetazzo/pipework | DockerコンテナにvNICを一つ割り当て、ホストOSとブリッジを構成してくれる機能強化ツール(個人制作のツール) |
Fig | Docker | https://github.com/docker/fig | Docker社が買収した、複数のDockerコンテナを組み合わせた環境に構成・運用管理などを行うための機能強化ツール |
Mesos | Apache | http://mesos.apache.org/ | Docker専用のツールではないが、Docker用のモジュールが用意されているMesos-dockerとMarathonを組み合わせることによって、一つのイメージから複数コンテナの立ち上げ等が出来るようになる機能強化ツール |
Flocker | ClusterHQ | https://github.com/clusterhq/flocker | ZFSベースのデータボリューム管理機能と、マルチホストコンテナクラスタを管理するための管理ツール |
Libswarm | Docker | https://github.com/docker/libswarm | Docker社謹製のツールで、マルチプラットフォーム上に同時に、または特定のプラットフォームを指定してコンテナを作成出来る。今後、オーケストレーション機能の追加が予定されている機能強化ツール |
コンテナ管理ツール | |||
ShipYard | Shipyard | https://github.com/shipyard/shipyard | ブラウザ上で現在稼働中のコンテナや、そのコンテナのリソース消費量等を視認出来るコンテナ管理ツール |
Panamax | Panamax | http://panamax.io/ | 「人間のためのUI」を思想に開発されているブラウザ上でコンテナ管理ができる管理ツール。 独自の概念である「テンプレート」を利用すると、連携が必要なシステムをコンテナで複数立ち上げ、1クリックでシステムを稼働させられる |
コンテナ向け軽量OS | |||
CoreOS | CoreOS.inc | https://coreos.com/ | コンテナ技術に特化して開発されたLinuxディストリビューション。 パッケージ管理など不要なものはすべて排除されており、非常に軽量である。Dockerに加えて、CoreOSが開発したRocketというコンテナ技術も利用可能 |
Snappy UbuntuCore | Ubuntu | http://www.ubuntu.com/cloud/tools/snappy | Dockerだけではなく様々なコンテナ技術を扱えるようにカスタマイズされた軽量なUbuntu OS。 特筆すべき機能としてアップデートのロールバック機能を備えている。 現在のところKVM、AWS、Azure、GCP上で提供されている。 |
Project Atomic | Red Hat | http://www.projectatomic.io/ | Red Hatが開始したコンテナ向けOSプロジェクトで、開始時点ではGearという独自コンテナ向けだったが、Dockerが注目され始めたことによりDockerを全面的にサポートしている。 コンテナクラスタツールであるKubernetesを取り込み、提供する動きも見られる |
Panamax
開発元 | CenturyLink Labs |
---|---|
公式サイト | http://panamax.io/ |
ライセンス | Apache License 2.0 |
提供開始 | 2014/08 |
最新バージョン | 0.2.5 |
Panamaxは「人間のために考えられた」をキャッチコピーとしているDockerコンテナのGUI管理ツールである。Panamaxは、ブラウザ上からコンテナの作成、管理、削除を実行出来る。加えて、後述するPanamaxテンプレートを用いることで、サービスを1クリックで稼働させられる。導入も非常に簡単なので、試してみたい。インストール手順も後ほど紹介する。
メリット
最大のメリットは、やはり複数のアプリケーションの組み合わせである「システム」を1クリックで稼働させられる「Panamaxテンプレート」の存在だろう。これを使うことによって、インフラを知らない開発者であってもGUI上からのワンクリックでシステム基盤を作成し、アプリケーションの開発に取り掛かれるのは、非常に大きなメリットと言えるだろう。
デメリット
Panamaxのデメリットとしては、ユーザ管理が出来ない点が挙げられる。本来であれば「Aさんには○○が出来る権限のユーザをあげるよ。Panamaxで自由に環境作ってみてね」としたいところだが、現状ではこれは実現出来ない。Panamaxが動いている環境がわかってしまえば、だれでもアクセス出来てしまうからだ。これでは管理が煩雑すぎるし、セキュリティ的にも不安である。少人数で個々人の動きが把握できる、または信頼出来るチームでなければ複数人で利用するのは難しいだろう。
Panamaxの導入
導入は非常に簡単である、今回はCoreOS上への導入手順を紹介しよう。
これでインストールは完了だ。PanamaxのDockerコンテナがダウンロードされ、稼働しているだろう。早速実際に動かしてみよう。今回はPanamaxが導入されているホストと同一ホスト上に、Panamaxを使ってMediaWikiを構築してみよう。まずは「http://localhost:3000」へブラウザでアクセスしてみる。以下のトップ画面が表示されるはずだ(図1)。
トップ画面では、テンプレートやDockerHubに登録されているDockerイメージの検索が可能である。今回はMediaWikiを構築するので、テンプレートの中から「Wiki」を選択する。テンプレートの「Wiki」を選択すると、適合するテンプレートとイメージの一覧が表示される。イメージを選択した場合はイメージからコンテナを立ち上げるのみで、そのままではサービスを利用することは出来ない。今回は、Panamax上からの操作で構築からサービスの稼働まで完結したいので、テンプレートを利用する。ここでは「MediaWiki 1.21 – NGINX and MySQL 5.5」を選択し、右側にある「Run Template」をクリックしよう(図2)。
後は自動的にDockerコンテナの構築が進行していく。画面上部に「The application was successfully created.」というメッセージが表示されれば、構築は完了である(図3)。
ポートフォワーディングの設定は重複を避けて自動で割り当てられるので、割り当てられたポートを使い接続を確認する。ミスがなければ、無事MediaWikiのサービスが利用可能になっているはずだ。後はMediaWikiのメッセージに従って設定を行えば、すぐに利用開始できる(図4)。この手軽さは、非常に嬉しい。
いかがだったろうか。非常に少ない構築ステップで、MediaWikiを利用開始できたことがおわかりいただけたと思う。Panamaxにあるテンプレートであれば、煩わしい設定やネットワークに頭を悩ませることなく、使いたいサービスが利用できる。しかもこれらのサービスはコンテナで実行されているため、不要になった場合にもPanamaxの管理画面からDeleteボタンを押すだけで、完全に削除することが可能である。
Panamaxの評価
DockerコンテナやDockerコマンドを意識することなく、ブラウザ上からワンボタンでWiki環境やWordPress環境が作成出来るのは非常に良い。
コンテナイメージはDockerHubから取得しているので、膨大な数が利用できるが、ワンボタンで環境構築まで出来るPanamaxテンプレートは、若干少ない気がする。今後Panamaxのコミュニティが増加し、活発になればテンプレートも増えていくことだろう。そうすればより一層使いやすく、便利になるだろう。Dockerコンテナのマネージメントのみの利用に限っても、見やすく使いやすいと感じられた。
Kubernetes
開発元 | |
---|---|
公式サイト | https://github.com/GoogleCloudPlatform/kubernetes |
ライセンス | Apache License 2.0 |
提供開始 | 2014/06/10 |
最新バージョン | 0.4.3 |
Kubernetesは、現在もっとも注目されているDockerの周辺技術だろう。開発はGoogleが主導となっており、Microsoft、Red Hat、Docker、CoreOS、Saltstack、Mesosphere、IBM等の有名企業がこぞって開発に参加している。Kubernetesは全ての環境上(「全て」が何を指すかは、まだ発表がない)で動くことを目標としているDockerコンテナのオーケストレーションツールだ。GCP上での利用であれば、とても短い作業ステップで利用を開始出来るが、自前で環境を構築する場合は若干導入難度が高くなる。もっともこの点は、これから洗練されていくことだろう。
メリット
Kubernetesの最大のメリットと言えば、複数ホストでのDockerの利用が容易になる点だろう。Docker単体では、複数ホストにまたがったコンテナ間での管理をしようとすると複雑になりやすいが、Kubernetesならば一括で管理できる。
デメリット
一方デメリットとしては、利用難度が高い点が挙げられる。後述するがKubernetesには独自の概念があり、それらを理解しKubernetesとDocker双方のコマンドに精通している必要がある。
Kubernetes独自の「用語」
Kubernetesには、独自の用語(概念)があるので、これらのイメージを把握しておこう。
Pod
複数コンテナの集まりを、Podという単位で扱う、Pod内のコンテナは、同一ホスト上にデプロイされる。
Label
LabelはPodに任意の名前をつける機能で、Podに対するホスト名のようなものである。Labelは、1つのPodに対して複数付与することも可能である。
Minion
複数のPodの集まりを、Minionという単位で扱う。
Replica
Podの複製を作る仕組みのこと。この機能を応用することで、Pod単位でのオートスケールや障害時のPodの復旧といった使い方が考えられる。
Service
L3プロキシのようなネットワークを司る役割を持つ。設定したPodに対して、ラウンドロビンでのアクセス分配が可能である。
Kubernetesの機能
現状のKubernetesが備える機能については、DesignOverviewの記載が一次情報となる。現在できることは、以下の通りだ。
- 複数のコンテナをPodという単位で管理できる。ただしPodで管理するコンテナ群は、同一ホスト上である必要がある
- Podに対してLabelを付与し(複数可)、付与したLabelでPodを参照出来る
- PodはReplica機能を使って、手動で複製が可能である
- 複数のPodをMinionという単位で管理できる。MinionはホストをまたいだPod群をまとめることが出来る
- Serviceというネットワーク管理ツールによって、PodやMinionをどのネットワークへ接続させるかを管理する
これらの機能を組み合わせることによって、Kubernetesを用いたコンテナシステムのクラスタリングが可能となる(図5)。
現在の主な機能は上述の通りだが、この後も様々な機能が追加されることだろう。今後についてはKubernetesのロードマップを参照してほしい。
Kubernetesの評価
これからの発展に期待が持てるKubernetesだが、今の時点では足りない機能や設定が複雑な部分も多々あると感じられた。たとえばPodの手動複製は可能だが、Replication機能を使って自動でスケールアウトやフェイルオーバーまで考えるとKubernetesだけで全てを実現するのは難しいだろうと考えられる。
しかしGoogleは、Google App Engine(GAE)のように背後でコンテナ技術を使っていると想像されるサービスも提供している。もしKubernetesを使うことによって、GAEのようにセキュアでマルチテナンシーが確立されたコンテナ環境が実現出来るとしたら、Dockerコンテナの普及は爆発的に進むことが予想される。
Docker関連ツールの今後
Dockerをより良くするツールとして、基盤となるCoreOS、オーケストレーションであるKubernetes、そして視認性・操作性を向上させるPanamaxを中心に、2回にわたって紹介した。記事の冒頭に掲載した表でもわかるように、Dockerの周辺技術は紹介しきれないほど増えてきている。
GUI管理ツールだけ見ても、ShipYardやDockerUI、そして今回ご紹介したPanamax等が挙げられるが、それぞれUIの構成や実現出来ることに違いがあるので、それぞれ用途にあったツールを選択してほしい。なかでも、詳細説明を行ったCoreOS、Panamax、Kubernetesの3製品は、利便性も高く推奨できる。
次回は、Dockerを注視している各企業の動向とこれからについて説明したい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Dockerをより良く使うための3つの周辺技術
- KubernetesのマニフェストをMagnumで実行する
- Dockerの管理・監視ツール(1)
- OpenStack Magnumとコンテナ
- Dockerの管理・監視ツール(2)
- Dockerコンテナのオーケストレーション機能を実現するOpenStack Magnumを触ってみた
- 「OpenStack Paris Summit 2014」技術セッション聴講レポート
- Oracle Cloud Hangout Cafe Season 4 #2「Kubernetesのネットワーク」(2021年5月12日開催)
- Kubernetes環境の選択肢
- OpenStack、Docker、Hadoop、SDN、.NET…、2014年のOSS動向をまとめて振り返る