2014年9月4日

イマ旬キーワード

コンテナ仮想化

クラウドを支えるハードウエア仮想化と似て非なる技術「コンテナ仮想化」が注目を集めています。コンテナ仮想化の1つであるDockerによって、アプリケーションの配布方法が大きく変わるかもしれません。

技術開発本部 佐藤 聖規

ハードウエア仮想化とコンテナ仮想化の違い

ハードウエア仮想化技術といえば、VMware vSphere参考1、Hyper-V参考2、KVM参考3、Xen参考4などが有名ですが、これらとコンテナ仮想化は仕組みが大きく異なります。ハードウエア仮想化では、ホストOSとハイパーバイザによってハードウエアを仮想化し、VM(Virtual Machine)として動かします。VMの上にはゲストOSが起動し、その上にアプリケーション(プロセス)を動かします。ハードウエア仮想化技術の種類によってはOSとハイパーバイザが同一だったり、仕組みが若干異なったりしますが、VMを動かすという点では仕組みは変わりません。

一方、コンテナ仮想化では、ホストOS上のコンテナエンジン(コンテナを動かすための実装)を経由して直接アプリケーションを動かします。アプリケーションAとアプリケーションBの間は隔離された空間としてお互いに干渉することはありません。

【図】

図:ハードウエア仮想化とコンテナ仮想化

このため、コンテナ仮想化はハードウエア仮想化に比べ以下のようなメリットがあります。

  • プロセスを起動するだけなので、起動が高速
  • ゲストOSがないため、より多くのアプリケーションを起動できる

一方でデメリットもあります。

  • 仕組み上ホストOSと全くことなるOSを起動できない

コンテナ仮想化を支える技術と実現するツール

コンテナ仮想化に使われている技術はそれほど新しいものではなく、例えばLinux等で古くからあるNamespace等が使われています。コンテナ仮想化を実現するツールは2005年にオープンソース化されたOpenVZ参考5や、2014年2月に安定版がリリースされたLXC参考6があります。中でも特に注目を集めているのが2014年6月に1.0がリリースされたDocker参考7です。Dockerでは、コンテナ共有(配布)の仕組みであるDocker Hub参考8なども併せて公開されており、コンテナ仮想化の実現だけに留まらない活用の広がりを見せています。

多くのクラウドベンダーがDocker対応を発表

これまでは、OSやミドルウェアなどは利用者が用意して、アプリケーションを利用者がデプロイするというのが一般的でしたが、Dockerではコンテナを作り、コンテナをデプロイすることで、アプリケーションをコンテナでデプロイする、というスタイルを提唱しました。こうした変化に対応するため、実際にAmazon Web ServicesのElastic Beans Talkや、Google App Engine、Red Hat Enterprise Linux 7、VMwareなど、多くのベンダーや製品がDockerに対応しました。またDockerを動かすための軽量なLinuxであるCoreOS参考9やRed HatのProject Atomic参考10などが作られました。

まとめ

Dockerの登場により、コンテナ仮想化はにわかに注目を浴びています。コンテナ仮想化はこれまでもVPS(Virtual Private Server)やPaaSなどで使われてきましたが、より多くの利用シーンが出てくるのではないでしょうか。

著者プロフィール

【写真】

技術開発本部 佐藤 聖規

ウォーターフォールやアジャイル、クラウドをキーワードにソフトウエア生産技術のR&Dに従事。Jenkins実践入門など書籍・記事執筆、講演、コミュニティ活動などを精力的に行なう。

イマ旬キーワード

お気軽に
お問い合わせ
ください

古くて新しいコンテナ仮想化~Dockerで新たなアプリケーション配布スタイルへ~に関するお問い合わせ

お問い合わせフォーム