DockerホストOSとコンテナーベースイメージOSの関係は何ですか?


122

私が正しい質問をしていることは確かではありません...しかし、私が手に入れることができるすべてのドッカーを読んでいる間に、Ubuntu 12.04(たとえば)にDockerをインストールして、次にインストールすることができますFedoraコンテナーまたはubuntuの別のバージョン?(ユーザーがビジーボックスをコンテナーにインストールした例があります。)

そしてもちろん、私は完全に間違っている可能性があります。

しかし、ベースシステムとコンテナの間に一時的な接続があったことは、私の予想です。

言い換えると、ホストOSとコンテナベースイメージのOSの関係は何ですか?

回答:


100

BraveNewCurrencyで述べたように、ホストOSとコンテナー間の唯一の関係はカーネルです。

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

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

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

実際、例の便宜上、ベースイメージに依存することがよくありますが、配布ライブラリ/バイナリなしでイメージを作成することもできます。そうすれば、本当に小さいながらも機能的なコンテナができあがります。

ディストリビューションに関するもう1つのポイント:カーネルは依然としてホストのカーネルであるため、ディストリビューションによって提供される特定のカーネルモジュール/パッチはありません。


2
ホストOSがUbuntuの場合、コンテナーもUbuntuになりますか?
Richard

21
コンテナーのカーネルはubuntuのカーネルになりますが、それ以上のものはありません。centos、archlinux、debian、またはその他のLinuxベースのディストリビューションをコンテナーとして簡単に実行できます。
13

37
この情報はDocker Webサイトに直接または間接的に記載されている場合がありますが、私は彼らがこれを少し明確にする必要があると本当に感じています。私はホームページ、概要、インタラクティブなチュートリアル、およびほとんどの基本的なチュートリアルを順調に進めてきました。それにもかかわらず、私はこのトピックについて混乱し、Dockerの最高のパフォーマンス(サイトのアーキテクチャ図に基づく)にはホストとコンテナーのOSの一致が必要であると想定し始めていました。「Linuxカーネル」の概念は初めてなので、すぐにはわかりませんでした。これを即座に知ると、Dockerは悪口の2倍になります。
ctrlplusb 2014年

2
Dockerは高度な機能を活用するかなり複雑なプロジェクトです。ある時点で、ユーザーはオペレーティングシステムとディストリビューションの違いなどの知識を持っていると想定します。付加価値があると思われる場合、ドキュメントはオープンソースであり、プルリクエストを送信できます。
きしみ

3
これは、OSのユーザー空間部分(ライブラリ、コマンド、アプリケーション)のみをコンテナ化できることを示しているようです。アプリケーションで異なるカーネルリビジョンが必要な場合(3.10と4.9など)、コンテナーで実行できない可能性があります。そうですか?
デビッドC.

23

文字通り、共通しているのはカーネルだけです。それらの全世界(ファイルシステム)は、Dockerコンテナー内にあります。


1

別の考慮事項があります-両方のカーネルが同じであっても、RHEL 6などのホストOSがDockerをサポートしていない場合は問題があります:https : //access.redhat.com/solutions/1378023

したがって、イメージがLinuxのものであっても、RHEL 6でコンテナーを起動することはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.