1. ホーム
  2. linux

[解決済み] なぜdockerは異なるLinuxディストリビューションを実行できるのですか?[クローズド]

2023-07-12 08:52:15

質問

dockerを使って、様々なイメージを引っ張ってくることができます。そして、これらのイメージは異なるLinuxディストリビューションです。 しかし、dockerがどのLinuxディストリビューション上で動作していても、dockerは仮想マシンのようにこれらの異なるLinuxディストリビューションを実行することができます。

dockerが aufs を使用して、異なる読み書きアクセスレベルを制御しています。そのため、ホストマシン上のあるファイルを再利用することができます。しかし、Dockerはどのようにして apt-get をコンテナ内で実行させることができるのでしょうか? arch linux ? イメージには apt-get のバイナリが含まれていますか?しかし、Linuxディストリビューションによって、ライブラリやソフトウェアのバージョンは異なります。Dockerはどのようにアーチ型Linuxでubuntuを実行することができますか?

どのように解決するのですか?

カーネルが同じだからです。

すべてのlinuxディストリビューションの共通点、そしてなぜlinuxと呼ばれているかというと、linuxカーネルを使用しているからです。

コンテナはホストと同じカーネルを共有します。そのため、Ubuntu ホスト上で Arch イメージを実行することができるのです。

Linux の概要です。

カーネルは、ハードウェアとの通信を処理するオペレーティングシステムの一部です。オペレーティングシステムの最下層に位置します。ここでは、カーネルの主な機能を紹介します。

  • メモリ管理
  • ネットワーク管理
  • デバイスドライバ
  • ファイル管理
  • プロセス管理

つまり、コンテナを使用する場合、ホストのカーネルにしかアクセスできません。なぜなら、ハードウェアと通信するのはカーネルのみであり、OS が優れた syscall を使っている限り、コンテナの中でどんなLinuxディストリビューションでも動かすことができます。(これが、コンテナ内で Windows を使用できない理由です:同じ syscall ).