Docker のコンテナで動くOSがよく分からなかった
よく分からなくなったこと
- Dockerfile で Alpine Linux が登場して、コンテナの OS だよって言われてよく分からなくなった
- コンテナで OS が動いているの?ってなった
分かったこと
自分が理解できていなかったことで大事なこと。
- Docker は Linux でしか使えない(Windowsコンテナ―とかは無視)
- だから、 Windows や Mac(Unix) では直接は使えない
- Linux ディストリビューションが違っても実行ファイルは動作する
一つずつ説明していきます。
1. Docker は Linux でしか使えない(Windowsコンテナ―とかは無視)
まず
大前提として、Docker は Linux で成り立っている。
大前提として、Docker は Linux で成り立っている。
大前提として、Docker は Linux で成り立っている。
ここ重要。
2. だから、 Windows や Mac(Unix) では直接は使えない
Linux なので当然 Widows や Mac(Unix) では使えないため、Docker for Windows や Docker for Mac が用意されている。
今回は Windows で説明するが、Docker for Windows をインストールして Docker を起動すると、仮想環境で Linux が動作している。
Settings に Disk image location があるが、このイメージが Hyper-V 上で動作している。
Hyper-V を確認すると MobyLinuxVM というイメージが動作していることがわかる。
3. Linux ディストリビューションが違っても実行ファイルは動作する
参考サイトより引用
DockerはLinuxの同じCPUならば、違うディストリビューションでもマシン語で書かれている実行ファイルのフォーマットが同じ形式であり、適切な依存ライブラリを渡してやれば動くでしょという思想です。
OSの名前はついているが、ベースイメージはOS的役割をするのではなく、そのOSっぽい環境を整える(ディレクトリ構成をそのOSっぽくするなど)のが役割
もうここら辺の引用がほぼ答え。
- 実行ファイルはディストリビューションが違っても Linux であれば動作する
- Alpine Linux で それっぽい Linux OS の環境を作成する
- 実行時のLinux カーネルは ホストOS、環境はAlpine Linux となる
こんなイメージかなー
参考
Docker for Windowsのインストール後の設定項目 - Qiita
Docker - Dockerのコンテナ内で使われるOSについて|teratail