ぽっぽ屋

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という感じか。

備考

はとぽっぽ丸

はとぽっぽ丸

プログラマー5年目