1. ホーム
  2. docker

[解決済み] dockerのホストOSとコンテナのベースイメージOSの関係を教えてください。

2022-07-17 01:54:42

質問

私は正しい質問をしているかどうか確信が持てません...しかし、私が手に入れることができるすべてのドッカーを読んでいる間、私はUbuntu 12.04 (例) にDockerをインストールすることができ、それから私はFedoraコンテナまたは異なるバージョンのubuntuをインストールできることを見ました?(ユーザーがコンテナにbusyboxをインストールした例があります。)

そしてもちろん、私は完全に間違っているかもしれません。

しかし、ベースシステムとコンテナの間にエフェメラルな接続があることは、私の予想通りです。

再掲:ホスト OS とコンテナのベースイメージの OS の間にはどのような関係があるのでしょうか?

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

BraveNewCurrencyが述べているように、ホストOSとコンテナの関係はKernelのみです。

これは、docker と「通常の」仮想マシンの主な違いの 1 つで、オーバーヘッドがなく、すべてがホストのカーネル内で直接行われます。

これが、コンテナ内でLinuxベースのディストリビューション/バイナリのみを実行できる理由です。他のものを実行したい場合は、不可能ではありませんが、コンテナ内で何らかの仮想化 (qemu、kvm など) を行う必要があります。

Dockerはファイルシステムの表現であるイメージを管理します。任意のLinuxディストリビューションをインストールしたり、単にバイナリを置いたりすることができます。

確かに、この例では便宜上、ベースとなるイメージに頼ることが多いですが、ディストリビューションのライブラリやバイナリを一切使わないイメージを作成することもできます。そうすれば、本当に小さいけれども機能的なコンテナができるはずです。

カーネルはまだホストのカーネルなので、ディストリビューションによって提供される特定のカーネルモジュール/パッチはありません。