回答:
BraveNewCurrencyで述べたように、ホストOSとコンテナー間の唯一の関係はカーネルです。
これは、Dockerと「通常の」仮想マシンの主な違いの1つです。オーバーヘッドはなく、すべてがホストのカーネル内で直接行われます。
これが、コンテナ内でLinuxベースのディストリビューション/バイナリのみを実行できる理由です。他のものを実行したい場合、それは不可能ではありませんが、コンテナー内のある種の仮想化(qemu、kvmなど)が必要になります。
Dockerは、ファイルシステム表現であるイメージを管理します。Linuxディストリビューションをインストールするか、単にバイナリを置くことができます。
実際、例の便宜上、ベースイメージに依存することがよくありますが、配布ライブラリ/バイナリなしでイメージを作成することもできます。そうすれば、本当に小さいながらも機能的なコンテナができあがります。
ディストリビューションに関するもう1つのポイント:カーネルは依然としてホストのカーネルであるため、ディストリビューションによって提供される特定のカーネルモジュール/パッチはありません。
文字通り、共通しているのはカーネルだけです。それらの全世界(ファイルシステム)は、Dockerコンテナー内にあります。
別の考慮事項があります-両方のカーネルが同じであっても、RHEL 6などのホストOSがDockerをサポートしていない場合は問題があります:https : //access.redhat.com/solutions/1378023
したがって、イメージがLinuxのものであっても、RHEL 6でコンテナーを起動することはできません。