今回は仮想マシンとコンテナの概要について解説をします。
LinuCでは仮想マシンとコンテナの違いについて問われます。
これら二つの違いを明確に、ハッキリと、区別して理解することが重要です。
仮想マシンとは?コンテナとは?
冒頭で仮想マシンとコンテナの違いについて理解しておくことが重要であると述べました。
なので最初にこれらの違いについて解説していきたいと思います。
仮想マシンとは
仮想マシンとは一言でいえば、物理OSの箱庭の中で動作するOSを意味します。
たとえば、あなたが今使っているOS(ホストOSとでもいいましょうか)がWindows10だとすれば、仮想マシンはLinuxのCentOSも稼働しますし、Ubuntuも稼働させることが可能です。
仮想マシンは、ホストOS上で動くものですが、異なるOSをWindowsで動かすわけですから、仮想マシンが問題なく動くための環境を与えることが必要なんです。
タイに日本人がすんだらたまには和食が食べたいって思いますよね?
だからタイには日本村みたいなとこがあって、日本人も快適に過ごすことができます。
そんな感じです(違うか)
この仮想マシンに環境を与えるフレームワークは、LinuxにおいてKVM(またはXenもありますが、試験にはKVMが出題されるのでKVMについて言及しますね!)という仮想化技術が提供されています。
KVMにはハイパーバイザーと呼ばれる仮想化管理機構を備えており、仮想マシンの稼働を司ってます。
KVM等が提供する仮想環境は、カーネルなどのOSを動作させるプログラムが整備されています。
なのでゲストOSからすればKVMとハード面のリソースさえ与えてしまえば動作する手のかからない子なわけです。
今はそんなもんなんだぁくらいで大丈夫です。
仮想マシンのメリット
〇 仮想マシンは1台のPCに複数稼働させることができるので、運用コストを抑えることができます。
〇 すきなOSを好きな時にインストールできる、既に環境構築されたOSを仮想化する等、柔軟な管理が可能です。
仮想マシンのデメリット
〇 ゲストOSが動作しなくなったら仮想マシンは道ずれになる
コンテナとは
では仮想マシンに対してコンテナとはいったいなんでしょうか?
コンテナとは、各種アプリケーションの動作に必要な環境がパッケージ化されたものです。
つまり、コンテナは仮想マシンのように別途にOSを立ち上げるものではありません。
あるアプリケーションを動作させるために必要な環境を整えているもの、というイメージでとらえてもらえれば大丈夫です。
また、コンテナは仮想マシンのKVMのように仮想環境を与えられるわけではありません。
ホストOSのカーネル等のプログラムを共有して使います。
Linuxにおいては、Dockerと呼ばれるコンテナが提供されており、これらの管理を簡単にするためにKubernetes (k8s)と呼ばれるプログラムが提供されているます。
コンテナのメリット
〇 仮想マシンよりリソースを抑えて動作できる
〇 仮想マシンより起動が早い
コンテナのデメリット
〇 仮想マシンと同じですが、ホストOSが死ねばコンテナも死にます
終わりに
仮想マシンとコンテナの違いを中心にそれぞれのメリットデメリットを交えて概要解説しました。
次回は仮想マシンで使われるコマンド関連について紹介します。