仮想マシンとコンテナの違いとは?~比較から見えるそれぞれの特徴~

仮想マシンとコンテナの違いとは?~比較から見えるそれぞれの特徴~

前回のコラムでは、クラウドネイティブ技術の中心的存在として、コンテナに注目が集まっていることを紹介し、課題について触れました。今回は、仮想マシンの1つの形態であるコンテナについて、一般的な仮想化技術との違いを解説しながら、そのメリットとデメリットを整理します。

目次

仮想マシンとコンテナの違いとは

コンテナは仮想化技術の1つの形態と言われていますが、実際には一般的な仮想マシンとはアーキテクチャーが異なります。まずコンテナと仮想マシンの違いについて具体的に触れていきましょう。

コンテナの特徴は、ハードウェア上に存在するOSが1つのみであり、その上で複数のコンテナが稼働している仕組みになっていることです。コンテナアプリはOSから分離しているため、OSに起因するオーバーヘッドがかからずにリソースを有効活用できます。IPアドレスは自動設定で、外部とはNAT(Network Address Translation)で接続します。

一方で、一般的な仮想マシンではハードウェアのリソースを、ハイパーバイザーを介してLinuxやWindowsなど複数のOS環境に分けて、それぞれで仮想マシンが稼働します。仮想マシンごとにOSを用意するため、アプリに合わせてOSを選択できます。また、物理と同様に、IP管理も実施できます。仮想マシンは、物理環境で実装可能な機能はほぼすべて実現できるという意味で、信頼の厚い手法と言えるでしょう。実際に、現在のエンタープライズアプリケーションの稼働環境として、最も広く使われています。

ここで、コンテナと仮想マシンのメリットとデメリットを表にまとめます。

コンテナと仮想マシンのメリット・デメリット

コンテナのメリットとデメリット

コンテナを仮想マシンと比較した際のメリットは、なんといっても高速起動性です。コンテナの起動はシステム的には単なるプロセスの起動であるため、ハードウェアの初期化やカーネルのロードなど時間のかかるブート過程が存在しません。また、リソースが軽量であることも強みです。OSカーネルを含まないため、全リソースはホストOSから割り当てられ、仮想ハードウェアも作成されません。そのためオーバーヘッドが少なくなることから、集約度も向上します。

一方で、デメリットも存在します。まず、コンテナは「状態」を持たずに使用する必要があるため、消えることが前提になります。そのため、データを保存する方法を考えなくてはなりません。また、コンテナやオーケストレーションツールの可搬性やスケール、自動化のメリットを享受させるには、ステートレス/ステートフルな機能を適切に分解する必要があります。一般的な仮想マシンでは、すべてを仮想マシンに詰め込めばよかったため、その点もネックになりそうです。

また、コンテナの最大の懸念点として挙げられるのが、セキュリティです。複数のコンテナが1つのOS上で稼働するため、特に特権(root)を奪取されるとすべてのコンテナに影響が出てしまいます。また、近年のセキュリティ事情では、OS 上でのシグネチャー型のセキュリティ対策に限界があることが指摘されており、振る舞い検知などの新たな手法の必要性が指摘されています。

特に、コンテナイメージのパブリックなレジストリ「Docker Hub」の多くは、イメージにセキュリティの脆弱性をはらんでいると言われています。管理者権限パスワードがないDockerイメージもあると言われています。

実際に、不正なイメージによる仮想通貨発掘のマルウェアが紛れていた事例もあります。この仮想通貨発掘マルウェアは、Docker Hubで公開されているDockerイメージを悪用した不正なコンテナとしてデプロイされていたのです。

この攻撃は、設定に不備のあるイメージを特定することで、インターネットに露出している複数のホストを感染させることができます。Dockerのバージョンには依存せず、脆弱性を利用する必要もないとのことです。Docker APIが露出してしまうと、コンテナ一覧やログの取得、コンテナの起動、停止、強制終了など、広範なコマンドを実行できるようになってしまいます。さらには、指定したイメージとオプションで新しいコンテナを作成することもできますので、大規模な悪用を許す可能性が出てきます。

VMware Tanzuが導く仮想マシンとコンテナの一元管理という現実解

前回も触れたように、コンテナの課題に対処するために、VMwareはクラウド環境向けに最適化したネットワーク製品「VMware NSX-T 3.0」を2020年に発表しました。これにより、コンテナの世界でのネットワークセキュリティを含めたインフラの準備が整いつつあります。

加えて、Kubernetesの導入からマルチクラウドへの展開を実現する「VMware Tanzu」の登場により、いよいよ仮想マシンとコンテナの一元管理が可能になってきます。ERP(統合基幹業務システム)などのように仮想マシンで構築した既存資産で運用し、そこから生成されるデータやサービスを活用してDX向けのアプリなどをコンテナシステムとして開発するといった連動が可能に。

日本企業は歴史的な経緯として、メインフレームの時代からクライアント/サーバ、SOA(サービス指向アーキテクチャ)といった流れの中で構築したシステムを仮想マシン上に保持しているケースが多くなっています。SoR(Systems of Record)とも言われる既存資産を生かした上で、SoE(Systems of Engagement)などDXを意識したアプリケーションを開発できるという意味で、仮想マシンとコンテナを一元管理するTanzuは、日本企業の今後のIT環境構築における現実的な解になると言えそうです。

目次