質問: 最近Dockerを触り始めたのですが、コンテナとOSの関係についてわからないことがあります。 Dockerの仕組みとして、ホストOSとカーネルを共有しており、コンテナはアプリケーションの実行に必要なもののみを隔離しているという理解でいます。 しかし、Dockerのimageを見ると、UbuntuやCentOSなどのimageも配布されています。 これらのimageが何を配布しているのかがあやふやなせいか、以下の点がよくわかっていません。 ・仮にMacOSにDockerを入れ、Ubuntuのimageをpullしてコンテナを立ち上げた場合、コンテナの中で動いているOSは何なのでしょうか? ・上記の例において、コンテナに何かライブラリをインストールしておきたい場合、homebrew等MacOS用のパッケージ管理ツールは使えるのでしょうか? ・別の例として、MacOSにDockerを入れ、OSではないimage(例えばpythonなど)をpullしてコンテナを立ち上げた場合、コンテナの中で動いているOSは何になるのでしょうか? 「コンテナの中で動いているOS」という表現は自分でも少し変かなとは思っているのですが... よろしくお願いいたします。
回答: UbuntuもCentOSもカーネルが同じでコマンド群が違うだけというものです。 なので、動いている環境のLinuxカーネルをそのまま利用し、コマンドセットだけそれっぽく構成しなおしたのが、UbuntuやCentOSのimageです。 > > OSではないimage(例えばpythonなど) > > > も、実際は動作環境のLinux上で動作します。 ただ、MacOSもWindowsもLinuxじゃないので、専用のLinuxを仮想環境で用意しています。