Dockerの仕組みについて
目的
Dockerの仕組みについて整理する
背景
Dockerについて他人に説明するときに理解不足を感じた為
仮想化の種類
仮想化には
- ホスト型
- ハイパーバイザー型
- コンテナ型
の3種類ある。
Dockerはこの中でコンテナ型に該当する。
Dockerの特徴
コンテナ型仮想化の特徴というべきかもしれないけど
コンテナはホストOSで動いている
ホスト型仮想化のような「ゲストOS」は無い。
「コンテナ上のOS=ホストOS」ということになり、コンテナはホストOSのカーネルを使用している。
その為、異なるカーネルのOS(Windows上でUbuntu、Ubuntu上でMac等)は動作させることができない。
Docker for Windows(Mac) ではLinuxの仮想マシンを立てている
先述した通り、異なるカーネルのOSは動作させることができない。
では Docker for Windows(Mac)でLinuxコンテナが使えるはどうしてかと言うと、ホストOS上で軽量LinuxOS (MobyLinux) の仮想マシンを立てている。
これにより、WindowsやMac上でもLinuxコンテナが動作する。
ちなみに仮想マシンを立てる際、WindowsではHyper-V、MacではHyperKitを使用しているとのこと。
コンテナ上のOSについて
これも先述の通り「コンテナ上のOS=ホストOS」であるが、実際にコンテナ上でOSを確認してみるとコンテナイメージによってDebian、Ubuntu、CentOSなど様々なOSが使われている。
これはコンテナ上でそれっぽいディレクトリ構成にすることでそのOSであるかのように振る舞わせているだけらしい。
コンテナ上でUbuntuが動いているように見えてもそれはUbuntuっぽいディレクトリ構成になっているだけで、その実態はMobyLinuxということ。
例えるならUbuntuの着ぐるみを着たMobyLinuxという感じか。
備考
- Windowsのイメージも配布されていた