Dockerをより良く使うための3つの周辺技術
前回の記事では、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 | 概要 |
---|---|---|---|
機能強化ツール | |||
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を取り込み、提供する動きも見られる |
Core OS
開発元 | CoreOS.inc |
---|---|
公式サイト | https://coreos.com/ |
ライセンス | Apache License 2.0 |
提供開始 | 2013/06 |
最新バージョン | 557.0.0 |
CoreOSは、コンテナの稼働を目的とした超軽量のLinuxディストリビューションである。CoreOSの構成要素はLinuxカーネル、systemd、コンテナ技術、そしてコンテナの動作に必要なパッケージのみであり、仮想マシンを複数立ち上げるのが困難な低リソースのサーバであっても、CoreOSとDockerであれば十分に運用出来る。導入にはノウハウが必要な箇所が存在するので、実際のインストール手順も含めて紹介する。
メリット
現在の一般的なLinuxディストリビューションは、ことDockerを運用していく専用OSとして利用するにはいささか冗長である。例えばコードの管理やnginxの稼働、RDBの運用等は、全てDockerコンテナで実現出来る。そのため、他のディストリビューションで広く利用されているパッケージマネージャは不要となる。CoreOSは、そういった「Dockerで出来ること」を可能な限り排除して軽量化を図り、主要な機能をコンテナ技術に任せることを前提に制作されている。そのためDockerと組み合わせると、重複する不要なプロセスやプロダクトにリソースを消費することなく、セキュリティホールになりうるリスクも最小限に、Dockerを運用できることだろう。
デメリット
CoreOSの最大のデメリットは、利用方法が一般的な他のディストリビューションと大きく違う点だろう。CoreOSには通常のLinuxディストリビューションには存在する一般的なコマンドがインストールされていない。パッケージ管理のyumもapt-getも存在せず、コマンドも必要最低限しか実装されていない。
CoreOSを導入してみる
今回インストールするのはCoreOS 472.0.0、稼働させる環境はVMWare ESXi 5.5.0上の仮想マシンである。公式ドキュメントを参考にした。
導入の時に登場するマシンは、全部で以下の3つだ。
- CoreOSをインストールするVM(以降CoreOSVM)
- CoreOSをダウンロードしたり変換したりするLinux端末(以降Linux端末)
- VMware ESXiにアクセスするWindows端末(以降Win端末)
ダウンロード
まずLinux端末より、CoreOSのイメージをダウンロードする。
解凍
Linux端末よりダウンロードしたCoreOSのイメージを解凍する。
解凍後、作成されたディレクトリへ移動しておく。
OVFツールの導入
Win端末からVMwareの公式サイトにアクセスし、OVFツールをダウンロードする。
VMware Open Virtualization Format Tool
ダウンロードが完了したら、Linux端末へファイルを送、Linux端末上でOVFツールをインストールする。OVFツールのファイル名は「VMware-ovftool-3.5.2-1880279-lin.x86_64.bundle」であるとする。
OVFへ変換
Linux端末上でダウンロード・解凍したCoreOSのイメージを、OVFツールを用いて変換する。
VMWareESXi上でデプロイ
Win端末よりESXiへアクセスして「ファイル→OVFをデプロイ」を選択し、OVF形式に変換したCoreOSイメージファイルを指定してデプロイする。
初回ログインの手順
CoreOSではコンソールからのログインは出来ないので、CoreOSをダウンロードしてきたディレクトリの中にある「insecure_ssh_key」をアクセスするLinux端末へ配置し、以下のコマンドでログインする。
ログインに成功すると、以下のメッセージが表示される。
CoreOSではDockerがインストール済みなので、後は利用するだけである。
CoreOSの評価
CoreOSは2014年の7月に正式版がリリースされ、大きな不具合も報告されていない。2014年の12月にDockerと決別する意向を表明したのは残念だが、それでも現状Dockerを低リソースで活用するのであれば、CoreOSはおすすめできる選択肢だろう。
筆者は、CoreOSを利用する価値があると考えている。だがパッケージ管理方法や、普段使っているOSコマンドや設定ファイルがないことが多々あるので、利用には若干の慣れが必要である。
次回は、KubernetesとPanamaxを紹介する予定だ。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 注目すべきDockerの周辺技術 PanamaxとKubernetes
- OpenStack、Docker、Hadoop、SDN、.NET…、2014年のOSS動向をまとめて振り返る
- Docker向けの軽量Linux OS 主要3種を比較する
- Dockerの導入前に知っておくべきこと
- Red HatがCoreOSを買収へ
- Dockerを理解するための8つの軸
- Dockerが注目されている理由を探る
- CoreOS、Linuxコンテナ実行エンジン「rkt 1.3」リリース
- KubernetesのマニフェストをMagnumで実行する
- クラスキャット、OpenStack Kiloベースのプライベートクラウドソリューションを提供開始