こんにちは、インフラエンジニアれおです。
- 仮想マシンについて分かる
- コンテナ技術について分かる
- 仮想マシンとコンテナの違いが分かる
今回は、仮想マシンとコンテナ技術について説明した後、両者の違いについて解説していきます。
図を用いて解説しているので初心者の方でも分かりやすくなっています。
私自身は、まだまだ勉強中ですがお仕事で仮想マシンの構築などに携わっています。そんな私が今回は解説していきます。
仮想マシン
仮想マシンとは、仮想化技術を用いて1台の物理的なサーバーの上に仮想的に動かす別マシンを構築するというものです。
ハイパーバイザーと言われる仮想化管理機構の上で仮想マシンが稼働し、その中でゲストOSが稼働します。
つまり、ゲストOSにとってみれば独立した1台のサーバーになるということです。
これが仮想マシンを構築する際の仕組みです。
ちなみに、ホストOSがwindowsOSでも、ゲストOSがUbuntu、MacOS、CentOS、RedHatなどを動かすことができます。
仮想マシンのメリット
- 1台のサーバーに複数のサーバーがあるのでコストが削減できる
- 利用したいサーバー数の増減ができる
仮想化を行うことで、物理サーバーの数が減らせるため運用コストを削減できます。
また、限られたリソースの中でそれぞれの目的に応じたサーバーを複数構築できるため、柔軟なシステム構築が可能です。
仮想マシンのデメリット
- 物理サーバーより性能が劣る
- ホストに障害が起こった時、複数の仮想マシンが影響を受けること
仮想マシンは、仮想化ソフトウェア(ハイパーバイザー)によって作られます。物理的な環境に比べて仮想化の処理をはさむことで、割り振ったリソースよりも性能が劣る場合があります。
それに加え、物理サーバーのCPU機能を分割して各仮想マシンに割り振っているため、十分なリソースを確保できず性能が落ちることもあるでしょう。
災害などで、1つの物理サーバーに影響が出ると複数のサーバーに影響がでます。そのため、サーバーを設計する際には、関西と関東に同じサーバーを1台ずつ構築するといったケースも少なくありません。
コンテナ技術
仮想マシンに並んで、コンテナ技術も仮想化の一種です。
コンテナ技術は、アプリケーションの動作に必要な環境がパッケージングされた「コンテナ」をサーバー上で独立して動かすことができます。
コンテナ技術を使用する環境として最も普及しているのが、Dockerです。
Dockerは、仮想マシンを動かす環境ではなく、独立した環境でアプリケーションを動かす技術、と考えると良いでしょう。
コンテナ技術のメリット
- 素早く環境をセットアップできる
- リソースが少なくて済む
仮想マシンのように、独立したOSを構築しないため作業工程が短縮され、素早く環境をセットアップできます。
また、独立したOSを構築せずホストOSとカーネルを共有するため、システムリソースが少なく済みます。
コンテナ技術のデメリット
- OSが固定される
- 運用が複雑化しやすい
独立したOSが存在しないため、OSは、ホストマシンに依存します。
アプリケーションごとにシステムを細かく分割できるがゆえに、複雑化しやすく運用が大変になっていきます。
両者の違い
これまで仮想マシンとコンテナ技術のメリット・デメリットについて解説してきました。
両者の大きな違いとしては、仮想環境にOS(ゲストOS)があるかないかといったことではないでしょうか。
仮想マシンでは、ホストOSに依存せずにゲストOSを構築できることがメリットとなります。
逆にコンテナ技術では、ゲストOSを構築しないため、素早くセットアップでき、システムリソースも少なく済みます。
まとめ
今回は、仮想マシンとコンテナ技術について解説してきました。
両者の構成図の違いを理解するとそれぞれのメリット・デメリットがわかりやすくなります。
コンテナ技術を用いた、Docker・Kubernetesがトレンドなのでこのあたりの勉強も進めて行きましょう。筆者もこの辺りはまだまだ勉強中なので、一緒に勉強頑張りましょう。