Dockerに入門してみました。入口編。
の続きです。
ベースイメージにOSが有る謎
Docker環境を定義するDockerfileでは、
DockerHubとかで公開されているベースイメージを元にコンテナ環境を構築します。
その中には、UbuntuとかCentOSとかのイメージもありますが、
Dockerは仮想化によりホストOSの上で別のOSを動かすような仕組みでは無かったはずです。
どういうことでしょう?
Ubuntu環境でCentOSのDockerを動かすことが出来るということでしょうか?
異なる"ディストリビューション"が共存可能
UbuntuとかCentOSは、ディストリビューションと呼ばれており、
Linuxカーネルは同じで、その上に載っているコマンドとか設定が違うだけのものです。
なので、
Docker環境でもアプリはホストOSのLinuxカーネルをそのまま利用します。
コマンド類については、
Dockerコンテナで移動させたルートディレクトリ環境に、そのOS用のものを格納します。
これにより、アプリから見て、まるで別OSで動いているかのように見せかけているのです。
そういう意味では、WindowsとかMacOSのように、本当に別種類のOSを動かすことは出来ません。