Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

コンテナとは?VMとの違いを交えてご紹介

投稿日:2021年6月25日 更新日:

 

<目次>

(1) コンテナとは?VMとの違いを交えてご紹介
 (1-1) コンテナとは?
  (1-1-1) コンテナの仕組み概要
  (1-1-2) コンテナの利点は?
  (1-1-3) コンテナの便利な使い道
 (1-2) コンテナとVMの違いは?
  (1-2-1) VMの仕組み概要
  (1-2-2) VMの利点は?
 (1-3) 両者の違い:「仮想化しているレイヤー」がそもそも違う
 (1-4) 両者の違い:OSを共有するかどうか?

(1) コンテナとは?VMとの違いを交えてご紹介

(1-1) コンテナとは?

(1-1-1) コンテナの仕組み概要

「コンテナ」は1つのOS上にアプリケーションが動作するための「コンテナ」と呼ばれる「論理的な箱」を設けて、コンテナ毎にライブラリやアプリケーションをデプロイする事で、各コンテナ単位で個別のサーバ/OSのように機能させる技術です。

OS上にコンテナエンジン(Dockerなど)が存在し、各コンテナの制御を担っています。

VMではそれぞれがゲストOSを保持しているのに対して、コンテナではアプリケーションとライブラリやその依存関係のみなので、非常に軽量で高速に動作する事を実現しています。

(図111)コンテナのイメージ図

 

とはいえ、各コンテナは通常のOSのように、それぞれ処理領域を持ち、それぞれのコンテナで管理者権限でのコマンド実行ができたり、それぞれが独立したネットワークインターフェースやIPアドレスを持ち、それぞれでファイアウォールを設定できたりと、「まるでOS」のような機能を、非常に軽量・高速で実現しています。
 
加えて、アプリケーションの動作に必要な実行環境(例:フレームワーク・ライブラリ=jQuery、Spring等、アプリケーションサーバ=WebLogic等、実行環境=JREなど)を全てパッケージングしているため、OSが変わっても同じように安定的に動く事ができます。
 
(図112)コンテナの中身
 
(備考)

・コンテナが載るOSは仮想OS(VM)でも可能です。

目次にもどる

(1-1-2) コンテナの利点は?

(表)コンテナの利点

コスト削減 コンテナによりハードウェアの費用削減
コスト削減 コンテナ群は同一のOS上で動くため、ハードのリソース消費を抑える事ができる(VMのように沢山OSがあるとリソース消費が激しい)
疎結合 アプリケーション実行環境同士が「コンテナ」で分かれており、依存性が低い。
疎結合 「OS」と「アプリケーション」の依存関係を排除できる
高性能
(高速&軽量)
コンテナはゲストOSが不要なので、VMと比較して「高速(数秒で起動)」かつ「軽量(数MB程度)」かつ「メモリの消費も少ない」という利点があります。
可搬性 コンテナは、OSやハード問わず動作するため、可搬性が高い。
運用コスト削減 デプロイ時間の短縮
運用コスト削減 OS上で複数のコンテナが稼働するため、管理するOSの数を劇的に減らす事ができます。

目次にもどる

(1-1-3) コンテナの便利な使い道

(例)複数バージョンの実行環境を1つのOSで管理
⇒例えば、Java7の環境も、Java8の環境も両方残したい場合など。

(例)様々なOSで動作させた場合の移送が便利!
⇒Javaの実行環境が載るOSをLinux(物理)⇒Windows(クラウド)と移送する場合、通常なら新しく環境を構築(インストール作業など)をする必要がありますが、コンテナの場合はそのまま配置するだけで直ぐ動くので実行環境を構築する手間が省けます。

目次にもどる

(1-2) コンテナとVMの違いは?

「コンテナ」はアプリケーションが載る基盤に関わらず、「環境間の移行を素早く」かつ「安定的に稼働」させるためのソリューションとして誕生しており、よく「VM」と比較され混同しやすいですが、両者の違いを把握するために、まずはVMについて簡単に触れさせて頂きます。

(1-2-1) VMの仕組み概要

VMは1つのサーバ上で複数の異なる仮想OSを作成・起動できる仕組みです。その根幹を担うのが「Hypervisor」という仮想化ソフトウェアで、各VMの生成してリソース(メモリやCPU)を割り当てて、それを実行する役割をHypervisorにて担っています。それぞれが独立したOS(ゲストOS)であるが故に、本来よりもメモリ消費が多くなるなど、リソースが逼迫するリスクがあります。

(表)「Hypervisor」について

VM
Hypervisor
Hypervisorは「VMM」(Virtual Machine Monitor)とも呼ばれており、VMを生成・実行するためのソフトウェアです。Hypervisorを使う事で1つのホストマシンで、複数のゲストOS(VM)をメモリやCPU等のリソースを分け合いながら、運用する事が可能となります。

(図121)

目次にもどる

(1-2-2) VMの利点は?

またVMのメリットとしては次のような点が挙げられます。

(表)VMの利点

コスト削減 OSの仮想化によりハードウェアの費用を削減
疎結合 複数のOSがお互いに影響なく共存できる
疎結合 「サーバ」と「OS」の依存関係を排除できる
可搬性 VMは物理サーバ間の移動が容易(ファイルコピー等で移動可能)

目次にもどる

(1-3) 両者の違い:「仮想化しているレイヤー」がそもそも違う

VMは「ハードウェアレベル」で仮想化(HW上に複数の仮想OSを稼働)しており、「ハードウェア」に依存しない「OS」を作る事ができます(仮想マシンをコピーすれば、どんなハード上でも動く)。

一方でコンテナは「OSレベル」での仮想化(OS上に複数のコンテナ=論理的な箱を稼働)しており、「OS」に依存しない「アプリケーション」を作る事ができます(コンテナエンジンさえあれば、後はコンテナをコピーすれば、どんなOSでも動く)

(図131)VM vs コンテナの比較図

目次にもどる

(1-4) 両者の違い:OSを共有するかどうか?

上述の通り、コンテナは「まるでOS」のように振る舞う事ができますが、実際はOSではなく、ホストOSのリソースをコンテナ間で「共有」している点がVMとは異なります(VMは独立してOSを持つので、それぞれのOSで確保しているリソースを独占できる)。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Azure App ServiceにVisual Studioからデプロイを行う方法

  <目次> (1) Azure App ServiceにVisual Studioからデプロイを行う方法  (1-0) STEP0:前提条件  (1-1) STEP1:Visual Stu …

hostsファイルとは?書き換えや反映の手順をご紹介(Windows編)

<目次> (1) hostsファイルとは?書き換えや反映の手順をご紹介(Windows編)  (1-1) hostsファイルとは?  (1-2) hostsファイルの主な用途  (1-3) hosts …

クラウドネイティブとは?(コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ等)

<目次> (1) クラウドネイティブとは?(コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ等)  (1-1) コンテナ  (1-2) サービスメッシュ  (1-3) …

排他制御における楽観ロックと悲観ロックについて

<目次> (1) 排他制御における楽観ロックと悲観ロックについて  (1-1) 楽観的排他制御   ●概要・仕組み   ●イメージ図   ●楽観的排他制御で起こり得る問題  (1-2) 悲観的排他制御 …

Windows10でアイコンの間隔が広くなる不具合の対処

  <目次> (1) Windows10でアイコンの間隔が広くなる不具合の対処  (1-1) 発生状況・エラーメッセージ等  (1-2) 原因・対処 (1) Windows10でアイコンの間 …

  • English (United States)
  • 日本語
Top