仮想化に使うコンテナ技術って何?仮想マシンじゃどこがダメなのか?

仮想化に使うコンテナ技術って何?仮想マシンじゃどこがダメなのか?

仮想化技術は今やITシステムに不可欠で、ビジネスの規模や業種に関係なく広く使われているのは、以前の記事でもご紹介しました。製品名としてはVMwareシリーズなどがあり、「仮想マシン」として知られています。
これとは別に、最近注目を集めているのが「コンテナ型仮想化」という技術です。コンテナの管理ツールとして、デファクトスタンダードとなったDocker(ドッカー)という製品がさまざまな開発・運用現場で採用されています(Dockerについては、次回の記事をお楽しみに!)。コンテナと呼ばれる独立した単位は、OSなどの細かな差異を気にすることなく、開発やテストを高速かつ効率的に繰り返せるため、新しい技術やアイデアを次々と試したい開発エンジニアたちから支持されています。しかし、開発だけでなく、システム運用にも大いに関係します。今回は、コンテナについて見てみましょう。

コンテナとは?

コンテナとは、貨物船に積むコンテナのようにさまざまなITサービスを小さな単位に分けて、インフラ上で動作させる仮想化技術のこと。1つのサーバ上で、アプリケーションを実行するのに必要な仮想環境を、分離して複数実行できます。Dockerに代表されるコンテナ管理ツールが、ハードウェアやOSの違いを吸収するので、動作確認済みのコンテナなら、他の環境でもそのまま動作します。ソフトウェアの起動も高速です。

仮想マシンではダメなのか?

そもそも仮想化といえば、仮想マシン技術が広く使われています。ホストとなるOS上で仮想化ソフトウェアを実行し、その上で別のゲストOSを実行する「ホスト型」や、ハードウェア上で仮想化ソフトウェアを実行し、その上でゲストOSを実行する「ハイパーバイザ型」と呼ばれる方法があります。
仮想マシンは、物理マシンのホストOS上で複数のゲストOSを実行する技術で、物理マシンに可能なことは基本的に仮想マシンでも実行可能です。ただし、いくつかデメリットもあります。

仮想化サーバの運用(1)- 物理サーバと比較したメリットと特徴とは?
https://un4navi.com/prologue/19022/

仮想化サーバの運用(2)- デメリットや制限、導入前の注意点とは?
https://un4navi.com/prologue/19023/

仮想マシン技術

◯ホスト型:ホストOS上で仮想化ソフトウェアを実行し、その上で別のゲストOSを実行
例:VMware Player、VMware Workstation、Oracle VirtualBox、Windows Virtual PCなど

◯ハイパーバイザ型:仮想化ソフトウェア「ハイパーバイザ」をハードウェア上で実行し、その上でゲストOSを実行
例:VMware vSphere、ESXi、Xen、KVM、Hyper-Vなど

仮想マシン技術のデメリット

  • CPUやメモリ、ディスクなどのリソースも多く消費し、無駄なオーバーヘッドが生じる
  • ハードウェアの機能やネットワークスイッチなども完全にエミュレートするには、高度な仕組みの実装が必要
  • ベースOSと完全には分離してないため、セキュリティ上の制約がある
  • ハードウェアに影響するアプリケーションは利用できない
  • 仮想マシンごとにゲストOSが必要なので、設定や管理の負荷が増大する など

コンテナのメリットとは?

そこで、仮想マシンのデメリットをカバーする技術として、コンテナが注目を集めています。コンテナを使うことで、開発者はOSやインフラの違いを意識せず、アプリケーションを開発に専念できます。ソフトウェアが軽量なため、実行やテスト、配布、カスタマイズも簡単です。
コンテナでは基本的に、環境の違いによる影響を受けないため、原則としてはそのまま他の環境でも動作します。ホストOS側でライブラリやミドルウェアなどの違いを考慮する必要がなくなり、最小限のシステムを管理するだけで十分です。開発環境で安定して稼働するかをチェックしておけば、テストや本番それぞれの環境に移行する時にも、個別に対応する手間が省けます。

コンテナ技術のメリット

  • アプリケーションを動作させるために必要な環境が、1つのコンテナで完結し、独立
  • 簡単にコンテナを作成でき、増えても管理が楽
  • ベースOSの機能を共有するため、OSの全機能は必要なく、オーバーヘッドを小さく抑えられる
  • 新旧バージョンOSやライブラリの違いなど、開発検証環境を多数用意しなくてもいい
  • 最小限のシステムでOK、ディスクスペースの節約と管理の簡素化
  • ベースOSと独立したファイルシステムやデバイスを利用可能
  • 国内外の開発拠点でも、環境を簡単に共通化できる など

新しい仮想化としてのコンテナ

コンテナ技術は、仮想マシン技術を置き換えるものではなく、目的と用途によって併用されることで、仮想化がさらに普及していくと見られています。コンテナはその構造上、OSを個別には選択できず、同じOSで利用することが前提という制約はあります。しかし、コンテナを簡単にパッケージ化して取り扱える上に、新しいコンテナもスピーディに提供できるのが大きな強みです。さらに、開発やテスト段階に限らず、本番環境にまで導入されると、各ステージの微妙な差異から生じる不具合も回避できるため、システムのアップデートの頻度も上がります。
ただ、開発にはメリットであっても、リリースの頻度が上がるとなると、安定したシステム運用を目指す担当者としては、いろいろ影響が気になるところ…。その辺りも含め、コンテナの管理ツールであるDocker(ドッカー)について、次の記事でご紹介しましょう。

コンテナとそれを管理するDockerはシステム運用にどう影響する?
https://un4navi.com/prologue/19043/

関連記事

ページ上部へ戻る