・仮にMacOSにDockerを入れ、Ubuntuのimageをpullしてコンテナを立ち上げた場合、コンテナの中で動いているOSは何なのでしょうか?
厳密に言うと何もないが正解で、親のOSであるLinuxで動かしています。
なのでDockerはOSがLinuxでなければインストールすら出来ません。
実はLinuxは共通仕様としてマシン語で書かれている実行ファイルのフォーマットが同じ形式です。
違うディストリビューションでも動作し、適切な依存ライブラリを渡してやれば動作します。
ハードディスクの中身を完全に一致させてバイナリ叩いた場合、
Ubuntuっぽいディレクトリ構造ならUbuntuっぽく、
CentOSっぽいディレクトリ構造ならCentOSっぽく動作するでしょ?という所が根拠になっています
(マシン語の命令が異なるARM等の特殊なCPUの場合、多くのDockerHubで提供されているコンテナやイメージは利用不可能になります)
MacOSはLinuxじゃないのでDockerは起動出来ません。
なのでDocker for Macというアプリケーションをインストールした時に、
準仮想化技術を使ってシンプル高速なLinuxを裏で仮想マシンとして動かして、その仮想マシン内でDockerを利用しています。
・上記の例において、コンテナに何かライブラリをインストールしておきたい場合、homebrew等MacOS用のパッケージ管理ツールは使えるのでしょうか?
Homebrewは無理です。
しょぼい仮想マシンのLinuxの中の話になるので…
例えばCentOSのイメージを落としてきた場合はyumというパッケージ管理ツール、
Ubuntuのイメージを落としてきた場合はaptというパッケージ管理ツールが使えますので、イメージに応じて使い分けてください。
これらは単純にパスの通ったディレクトリにyumやaptが入ってるかくらいの違いしかありませんからね。
・別の例として、MacOSにDockerを入れ、OSではないimage(例えばpythonなど)をpullしてコンテナを立ち上げた場合、コンテナの中で動いているOSは何になるのでしょうか?
繰り返しになりますがLinuxのいずれかのディストリビューションが候補になります。
最近はDebian系(Ubuntu含む)が強いですね。
気になる場合はDocker Hubというサイトで確認してみてください。
特に公式で配布されているような超有名イメージは全てビルド時に使われたDockerfileもセットになっており、
そのDockerfileの上から数行目にFROM ディストリビューション名
という形で書いてあります。
逆にDockerfileを公開していないようなイメージは使用しないでください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/25 14:02