DockerとVMと何が違うのかを調べていたところ、VMはOSを含めて動作する一方でDockerコンテナはホストOSのカーネルを使うことができ、それ以外に必要となるライブラリやアプリがDockerコンテナに含まれるという風に把握しました。

そこでタイトルのような疑問が浮かんできました。  
OSのカーネルはOSごとに違うはずです、ホストOSがWindowsでDockerコンテナ上でLinuxを動かす場合に、Windowsのカーネルを使ってLinuxを動かすということになります。  
WindowsのカーネルでLinuxを動かすことができるのでしょうか？  
これがどうしてこういうことができるのかをぐぐったのですが、答えが得られませんでした。

DockerコンテナがホストOSのカーネルを使える理由をおしえて下さい。  
この質問の目的としては、DockerとVMの違いを把握することなので、  
もしこの質問の意図がとんちんかんであれば、そちらを汲み取って案内いただけると助かります。

よろしくお願いします。
CC BY-SA 3.0
2018-02-06T07:33:12.623
41507
2018-02-06T09:10:40.317
25065
question
linux windows docker macos
DockerコンテナがホストOSのカーネルを使える理由をおしえて下さい
専門用語の詳細は忘れてしまっていますが、以下の通りだったと記憶しています。

Linux
には、カーネルの部分をそのままに、実行されているプロセス環境・ファイルシステムをまるっといれかえて実行する、みたいな機能があったと記憶しています。それに、レイヤー型仮想ファイルシステムなど、いろいろなライブラリを付け加えていって完成するのが
docker だったはずです。

docker はなので、 OS カーネルとして Linux の上でないと動作しません。 Linux のカーネル(とそれを含んだ OS) を動かすために、
docker for {Mac, Windows} は、 Linux VM を内部で動かしていたと記憶しています。

<http://docs.docker.jp/engine/installation/mac.html>

例えば、上記ページなどが、公式ドキュメントでこの周辺ツールがどう動作しているのか記述してあると思います。ネイティブインストーラでインストールした
docker for Mac である場合には、おそらく、内部で virtualbox を動かしているのではないか、と思っています。
CC BY-SA 3.0
2018-02-06T09:05:46.343
41511
2018-02-06T09:05:46.343
754
41507
answer
> ホストOSがWindowsでDockerコンテナ上でLinuxを動かす場合に、Windowsのカーネルを使ってLinuxを動かすということになります。

「ホストOSがWindowsでDockerコンテナ上でLinuxを動かす場合」というのがDocker for Windowsを指すものと解釈して回答します。

Docker for Windowsはいまのところ、WindowsのHyper-
VのVM上でLinuxを動かして、その中でLinuxのコンテナを動かすものです。Windowsのカーネルを使ってLinuxを動かすわけではありません。
CC BY-SA 3.0
2018-02-06T09:10:40.317
41512
2018-02-06T09:10:40.317
4010
41507
answer