teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明文をアップデートさせました

2020/02/03 04:08

投稿

miyabi-sun
miyabi-sun

スコア21445

answer CHANGED
@@ -1,9 +1,17 @@
1
1
  > ・仮にMacOSにDockerを入れ、Ubuntuのimageをpullしてコンテナを立ち上げた場合、コンテナの中で動いているOSは何なのでしょうか?
2
2
 
3
+ 厳密に言うと何もないが正解で、親のOSであるLinuxで動かしています。
3
- Linuxです(ディストリビュションは色々ある)
4
+ なのでDockerはOSがLinuxでなければインストールすら出来ません。
4
- DockerはLinuxの同じCPUならば、違うディストリビューションでもマシン語で書かれている実行ファイルのフォーマットが同じ形式であり、適切な依存ライブラリを渡してやれば動くでしょという思想です。
5
5
 
6
+ 実はLinuxは共通仕様として**マシン語で書かれている実行ファイルのフォーマットが同じ形式**です。
7
+ 違うディストリビューションでも動作し、適切な依存ライブラリを渡してやれば動作します。
8
+
9
+ ハードディスクの中身を完全に一致させてバイナリ叩いた場合、
10
+ Ubuntuっぽいディレクトリ構造ならUbuntuっぽく、
11
+ CentOSっぽいディレクトリ構造ならCentOSっぽく動作するでしょ?という所が根拠になっています
12
+ (マシン語の命令が異なるARM等の特殊なCPUの場合、多くのDockerHubで提供されているコンテナやイメージは利用不可能になります)
13
+
6
- MacOSはUnixなのでそんな事は出来ません。
14
+ MacOSはLinuxじゃのでDocker起動出来ません。
7
15
  なのでDocker for Macというアプリケーションをインストールした時に、
8
16
  準仮想化技術を使ってシンプル高速なLinuxを裏で仮想マシンとして動かして、その仮想マシン内でDockerを利用しています。
9
17