注目すべきDockerの周辺技術 PanamaxとKubernetes

2015年1月26日(月)
佐藤 司森元 敏雄

前回の記事では、Dockerを使いやすくする様々なツールが開発されており、その中でも特に注目を集めているものとして、CoreOSを紹介した。今回は、Dockerの周辺技術の中から、PanamaxとKubernetesを取り上げ、紹介しよう。

機能強化ツール、コンテナ管理ツール、コンテナ向け軽量OSに分類したDockerの主要周辺技術のリストを再掲しておく。

ツール名提供ベンダー公式URL概要
機能強化ツール
KubernetesGooglehttps://github.com/GoogleCloudPlatform/kubernetesGoogleと各社が協力して制作されているDockerコンテナのクラスタリングを主な機能としたオーケストレーションツール。様々な概念が追加されており、これからの開発に期待が集まっている
GearDRed Hathttp://www.projectatomic.io/Atomicプロジェクトの一部だが、独立しているため単体での利用が可能。Systemdの連携やコンテナ内のプライベートネットワークサポート、複数コンテナ連携向けのAPI等を提供する機能強化ツール
PipeworkJérôme Petazzonihttps://github.com/jpetazzo/pipeworkDockerコンテナにvNICを一つ割り当て、ホストOSとブリッジを構成してくれる機能強化ツール(個人制作のツール)
FigDockerhttps://github.com/docker/figDocker社が買収した、複数のDockerコンテナを組み合わせた環境に構成・運用管理などを行うための機能強化ツール
MesosApachehttp://mesos.apache.org/Docker専用のツールではないが、Docker用のモジュールが用意されているMesos-dockerとMarathonを組み合わせることによって、一つのイメージから複数コンテナの立ち上げ等が出来るようになる機能強化ツール
FlockerClusterHQhttps://github.com/clusterhq/flockerZFSベースのデータボリューム管理機能と、マルチホストコンテナクラスタを管理するための管理ツール
LibswarmDockerhttps://github.com/docker/libswarmDocker社謹製のツールで、マルチプラットフォーム上に同時に、または特定のプラットフォームを指定してコンテナを作成出来る。今後、オーケストレーション機能の追加が予定されている機能強化ツール
コンテナ管理ツール
ShipYardShipyardhttps://github.com/shipyard/shipyardブラウザ上で現在稼働中のコンテナや、そのコンテナのリソース消費量等を視認出来るコンテナ管理ツール
PanamaxPanamaxhttp://panamax.io/「人間のためのUI」を思想に開発されているブラウザ上でコンテナ管理ができる管理ツール。
独自の概念である「テンプレート」を利用すると、連携が必要なシステムをコンテナで複数立ち上げ、1クリックでシステムを稼働させられる
コンテナ向け軽量OS
CoreOSCoreOS.inchttps://coreos.com/コンテナ技術に特化して開発されたLinuxディストリビューション。
パッケージ管理など不要なものはすべて排除されており、非常に軽量である。Dockerに加えて、CoreOSが開発したRocketというコンテナ技術も利用可能
Snappy UbuntuCoreUbuntuhttp://www.ubuntu.com/cloud/tools/snappyDockerだけではなく様々なコンテナ技術を扱えるようにカスタマイズされた軽量なUbuntu OS。
特筆すべき機能としてアップデートのロールバック機能を備えている。
現在のところKVM、AWS、Azure、GCP上で提供されている。
Project AtomicRed Hathttp://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上への導入手順を紹介しよう。

リスト1:ディレクトリを作成

$ mkdir panamax

リスト2:Panamaxをダウンロード

$ cd panamax/
$ curl -O http://download.panamax.io/installer/pmx-installer-latest.zip

リスト3:圧縮ファイルを解凍

$ unzip pmx-installer-latest.zip

リスト4:インストール

$ sudo su
# ./coreos install –stable

これでインストールは完了だ。PanamaxのDockerコンテナがダウンロードされ、稼働しているだろう。早速実際に動かしてみよう。今回はPanamaxが導入されているホストと同一ホスト上に、Panamaxを使ってMediaWikiを構築してみよう。まずは「http://localhost:3000」へブラウザでアクセスしてみる。以下のトップ画面が表示されるはずだ(図1)。

Panamaxのトップ画面

図1:Panamaxのトップ画面(クリックで拡大)

トップ画面では、テンプレートやDockerHubに登録されているDockerイメージの検索が可能である。今回はMediaWikiを構築するので、テンプレートの中から「Wiki」を選択する。テンプレートの「Wiki」を選択すると、適合するテンプレートとイメージの一覧が表示される。イメージを選択した場合はイメージからコンテナを立ち上げるのみで、そのままではサービスを利用することは出来ない。今回は、Panamax上からの操作で構築からサービスの稼働まで完結したいので、テンプレートを利用する。ここでは「MediaWiki 1.21 – NGINX and MySQL 5.5」を選択し、右側にある「Run Template」をクリックしよう(図2)。

テンプレートを選択して、Run Templateをクリック

図2:テンプレートを選択して、Run Templateをクリック(クリックで拡大)

 後は自動的にDockerコンテナの構築が進行していく。画面上部に「The application was successfully created.」というメッセージが表示されれば、構築は完了である(図3)。

問題なく構築が完了した

図3:問題なく構築が完了した(クリックで拡大)

ポートフォワーディングの設定は重複を避けて自動で割り当てられるので、割り当てられたポートを使い接続を確認する。ミスがなければ、無事MediaWikiのサービスが利用可能になっているはずだ。後はMediaWikiのメッセージに従って設定を行えば、すぐに利用開始できる(図4)。この手軽さは、非常に嬉しい。

1クリックで、MediaWikiの環境が利用可能に

図4:1クリックで、MediaWikiの環境が利用可能に(クリックで拡大)

いかがだったろうか。非常に少ない構築ステップで、MediaWikiを利用開始できたことがおわかりいただけたと思う。Panamaxにあるテンプレートであれば、煩わしい設定やネットワークに頭を悩ませることなく、使いたいサービスが利用できる。しかもこれらのサービスはコンテナで実行されているため、不要になった場合にもPanamaxの管理画面からDeleteボタンを押すだけで、完全に削除することが可能である。

Panamaxの評価

DockerコンテナやDockerコマンドを意識することなく、ブラウザ上からワンボタンでWiki環境やWordPress環境が作成出来るのは非常に良い。
コンテナイメージはDockerHubから取得しているので、膨大な数が利用できるが、ワンボタンで環境構築まで出来るPanamaxテンプレートは、若干少ない気がする。今後Panamaxのコミュニティが増加し、活発になればテンプレートも増えていくことだろう。そうすればより一層使いやすく、便利になるだろう。Dockerコンテナのマネージメントのみの利用に限っても、見やすく使いやすいと感じられた。

Kubernetes

開発元Google
公式サイト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によるクラスタリングのイメージ

図5:Kubernetesによるクラスタリングのイメージ(クリックで拡大)

現在の主な機能は上述の通りだが、この後も様々な機能が追加されることだろう。今後については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を注視している各企業の動向とこれからについて説明したい。

株式会社アーベルソフト

インフラ基盤の設計・構築・運用までの全ての工程を担当。最近は、OSS製品を活用したインフラ基盤の提供を行っている。利用するOSS製品の調査・研究も行っており、現在は、DockerとTerraformに注目している。
>株式会社アーベルソフト

TIS株式会社

R&D部門である戦略技術センター所属。
金融系の大規模システム開発やプライベートクラウド開発環境の構築・運用の経験を生かし、OSS製品を中心としたの技術調査・検証を担当。
> TIS株式会社

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています