Dockerをより良く使うための3つの周辺技術

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

前回の記事では、Dockerの特徴を解説した。Dockerは非常に便利なツールであるが、単体では出来ることが限られている。例えば前回述べたように、実行も稼動状態の確認も全てCLIで行う必要があり、操作の難度も高く、視認性も低い。それを改善し、よりDockerを使いやすくするためのツールが多数開発されている。今回は、それらのツールについて紹介していきたい。

Dockerの周辺技術

Dockerの周辺技術には、大きく分けて以下の3つの分野がある。

コンテナ向け軽量OS

コンテナでほとんどのことを実行することを前提に作成された、超軽量のLinuxディストリビューションを指す。

Dockerコンテナ管理ツール

Dockerコンテナの確認や基礎的な操作を、GUIで実施可能にした管理ツールを指す

Docker機能強化ツール

複数ノードへのコンテナ一括構築やクラスタリングの簡素化等、Dockerを操作する上で利便性を向上させるツールを指す

ツールを組み合わせることのメリット

ツールを組み合わせることによるメリットは、様々である。まず初めに挙げられるのが、コンテナの管理が容易になるということだ。従来コマンドベースで管理しているDockerコンテナを、ブラウザ上でGUIによる管理が行える。簡単なコンテナであれば、GUI画面からボタン一つで環境を立ち上げることも可能だ。このようなツールがあれば、Dockerに精通した管理者でなくても管理や監視が可能だろう。属人性の排除は運用の常であるので、視覚的に分かりやすいツールは誰にとってもありがたいものだ。

次に挙げられるのは、コンテナのオーケストレーションが可能になることだ。任意のIPレンジを持ったバックエンドvNICのコンテナへの追加や、コンテナ間のクラスタリング等が、周辺ツールの組み合わせによって可能となる。マルチテナンシーや耐障害性が上がることによって、組み込める利用範囲も大幅に広がることだろう。

さらに、利用者が必要に応じて機能を選択できることも大きなメリットである。必要なツールだけを選択することによって、不要な機能がセキュリティホールになることもなく、余計なリソースを消費しないクリーンなシステムが構築できる。

また周辺ツールの導入のしやすさも魅力だ。一部に例外もあるが、ほとんどのツールはそのツールが導入されているイメージをDockerHubからダウンロードして、コンテナを稼働させるだけで利用可能になる。導入のハードルが低ければ、とりあえず試してみて自身の環境に適合しなければ利用を取りやめることも容易になる。コンテナで完結していることによって、ツールの削除もコンテナを破棄してイメージを削除するだけで済む。ホストOS部分には余計な設定が不要のため、追加したツールが原因でホストOSや他のコンテナが壊れる心配が少ないのも、利用者からすれば嬉しい限りである。

ツールを組み合わせることのデメリット

もちろん、ツールを組み合わせての使用には、デメリットもある。まず挙げられるのは、多種多様のツールから最適な製品を選定しなくてはならないということである。例えばブラウザ上でコンテナの死活を目視で確認したい場合、この機能を含んでいるツールは複数ある。それらの中から、どの製品が最良なのかは利用する現場によって変化することだろう。現状では各ツールについての情報が少なく、利用者自身が選定作業を行わなければならない点は、デメリットとなりえるだろう。

次に考えられるのは、特定のツールを導入することによってプラットフォームが限定されてしまう場合があることだ。例えば後述するKubernetesなどは、執筆時にはGCP上とCoreOSでしかサポートされていない。このように、特定のツールを導入したいがためにプラットフォームが制限されてしまう点はデメリットといえるだろう。

最後に指摘したいのは、ツールを導入することによって少なからず操作難度が上がる点だ。利用者や管理・運用者は、Dockerとツールの両方の利用方法を覚える必要がある。そのため、なるべく管理工数が少ないツールを選ぶことが望ましいと言える。

Dockerの主な周辺技術一覧

Docker周辺技術・ツールとして注目されている製品を、以下の表に示した。その中でもとりわけ注目度の高いCoreOS、Panamax、Kubernetesについては、機能概要や使用例も含めて、今回と次回に分けてご紹介する。

ツール名提供ベンダー公式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を取り込み、提供する動きも見られる
株式会社アーベルソフト

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

TIS株式会社

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

連載バックナンバー

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

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

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

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