Docker のコンテナで動くOSがよく分からなかった

よく分からなくなったこと

  • Dockerfile で Alpine Linux が登場して、コンテナの OS だよって言われてよく分からなくなった
  • コンテナで OS が動いているの?ってなった

分かったこと

自分が理解できていなかったことで大事なこと。

  1. Docker は Linux でしか使えない(Windowsコンテナ―とかは無視)
  2. だから、 WindowsMac(Unix) では直接は使えない
  3. Linux ディストリビューションが違っても実行ファイルは動作する

一つずつ説明していきます。

1. Docker は Linux でしか使えない(Windowsコンテナ―とかは無視)

まず

大前提として、Docker は Linux で成り立っている。

大前提として、Docker は Linux で成り立っている。

大前提として、Docker は Linux で成り立っている。

ここ重要。

2. だから、 WindowsMac(Unix) では直接は使えない

Linux なので当然 Widows や Mac(Unix) では使えないため、Docker for Windows や Docker for Mac が用意されている。

今回は Windows で説明するが、Docker for Windows をインストールして Docker を起動すると、仮想環境で Linux が動作している。

Settings に Disk image location があるが、このイメージが Hyper-V 上で動作している。

f:id:k6i:20181105191624p:plain

Hyper-V を確認すると MobyLinuxVM というイメージが動作していることがわかる。

f:id:k6i:20181105191634p:plain

3. Linux ディストリビューションが違っても実行ファイルは動作する

参考サイトより引用

DockerはLinuxの同じCPUならば、違うディストリビューションでもマシン語で書かれている実行ファイルのフォーマットが同じ形式であり、適切な依存ライブラリを渡してやれば動くでしょという思想です。
OSの名前はついているが、ベースイメージはOS的役割をするのではなく、そのOSっぽい環境を整える(ディレクトリ構成をそのOSっぽくするなど)のが役割

もうここら辺の引用がほぼ答え。

こんなイメージかなー f:id:k6i:20181105194515p:plain

参考

Docker for Windowsのインストール後の設定項目 - Qiita

Docker - Dockerのコンテナ内で使われるOSについて|teratail

Docker - DockerのベースイメージがホストOSと違ってもいいのはなぜ?|teratail

Ubuntu - このようなことはDockerで可能でしょうか?|teratail