VM vs Container
1. VMとContainer仮想化ソリューションの種類
Containerを仮想化させてくれるソリューションの中ではDockerを最も多く使用している。
2. Container仮想化
DockerがContainerを作ってくれる。
Linux6、7のようにバージョンによって、デフォルトでインストールされるライブラリが違う。
Linux6で開発完了したシステムをLinux7で起動をさせると、バージョンの違い等による問題が発生するだろう。
Linux6にDockerをインストールしてA Serviceのイメージを作ることができる。
イメージには、A Serviceとそのサービスが実行されるために必要なライブラリが一緒に入っている。
Linux7のバージョンに、DockerがインストールされていればLinux6環境のA ServiceのイメージからContainerの作成ができ、A Serviceの実行ができる。
A Serviceは自分の環境の中にあるOpenStack Library等を使うため、Linux7の環境でもシステムを実行することができる。
3. Container資源隔離技術
Dockerは、複数のContainer間でホストのリソースを分離して使えるようにしてくれる。
Linux技術の「cgroup」と「namespace」を使うことで可能になった。
・namespace:カーネルに関連した領域を分離をしてくれる。
・cgroup:リソースの領域を分離をしてくれる。
DockerのようなContainer仮想化ソリューションは、OSが提供するリソースの分離技術を利用してContainerという単位でサービスを分離できるようにしてくれる。
これを使うとContainer仮想化ソリューションがインストールされているOSでは、開発環境を気にせずにDeployが可能になる。
3. メリット&デメリット
処理速度
Containerのメリットはシステム構造的に、単一のOSを共有する概念であり、VMはそれぞれのOSを立ち上げるため、
Containerのほうが速い。
デメリットは、VMはWindowsを使っていてもGuest OSにLinuxをインストールして使うことができる。
Containerは、Linuxの上にWindowを使うことができない。
Security
SecurityのほうもVMは1つのGuest OSに問題が発生しても、他のGuest OSやHost OSとは完全に分離されているので、
影響はないが、Containerは、1つのContainerに問題が発生してOSの領域に不正アクセスされてしまうと、
他のContainerにも影響が及ぶ。