コンテナーと仮想マシンの違いをすべて理解したいと思います。これらの仮想化方法の両方で、すべての運用システムを備えたファイルシステムを監視できます。ただし、Dockerコンテナでは、 centos 5.x、私が実行した場合uname -a
コンテナのシェルでは、出力にホストカーネルのバージョンが表示されます。それはどのように機能し、クラシック仮想マシン(vmware、virtualbox、xenなど)との主な違いは何ですか?
どちらの形式でも、単一の物理マシン上で複数のオペレーティングシステムを実行できます。
コンテナーを使用すると、これらのオペレーティングシステムは分離されます(独自のファイルシステム、プロセス、libc
を含むライブラリ、IPアドレスなどが含まれます)が、それでもまったく同じカーネルを共有しています。それがuname -a
は、ホストカーネルのバージョンを示しました。
従来の仮想化では、オペレーティングシステムはそれぞれ独自のカーネルを実行しています。これらの複数のカーネルは、実際のハードウェアではなく、ハイパーバイザーと呼ばれるソフトウェアによって提供される仮想化されたハードウェア上で実行されます。これは、コンテナーベースの仮想化と比較して追加のレイヤーです。
仮想化の種類にはそれぞれ長所と短所があります。コンテナはオペレーティングシステムの選択においてより制限されています。コンテナは、実行中のカーネルによってサポートされている必要があります(例: Solaris上のSolarisゾーン 、 Linux上のLXC 、 AIX上のWPAR )技術的には、カーネル開発者が「エイリアン」ユーザーランドのサポートを実装することを禁止するものはありません(例:lxbrand = Solaris 10上のLinuxゾーン および SmartOS 、または最近 Windows 10のUbuntuランタイム )ハイパーバイザーを使用している場合、オペレーティングシステムは仮想ハードウェアでのみサポートされる必要があり、これにより多くの異種構成が可能になります(例:Linux 32ビットおよび64ビットカーネル、 * BSD、Solaris、Windows、Mac OS Xなど)
コンテナーの主な利点は、コンテナーがはるかに軽いことです。アプリケーションのパフォーマンスは、真のベアメタルOSインストールの場合と本質的に同じです。起動する追加のカーネルがないため、新しいコンテナのインスタンス化ははるかに速くなり、実行する追加のカーネルがないため、仮想環境の密度ははるかに高くなる可能性があります。
Docker はコンテナ実装ではないことに注意してください。 Dockerは containers で実行されるアプリケーションの構築/パッケージ化/配布の標準であり、それらを実行するために engine を含み、最近 orchestrator も追加しました。このエンジンは、ハイパーバイザーのエンジンと同様の役割を果たしますが、コンテナー上のアプリケーション用です。
良い出発点は、ウィキペディアを読むことでしょう 記事 :
オペレーティングシステムレベルの仮想化は、サーバーの仮想化方法であり、オペレーティングシステムのカーネルでは、1つだけではなく、複数の分離された ser-space instances を存在させることができます。このようなインスタンスは、コンテナー、ソフトウェアコンテナー、 仮想化エンジン (VE)または刑務所( FreeBSD jail または chroot jail )と呼ばれることもありますが、所有者とユーザーの観点からは、実際のサーバーのように感じます。
Unixライクなオペレーティングシステムでは、このテクノロジーは標準の chroot メカニズムの高度な実装と見なすことができます。分離メカニズムに加えて、カーネルはしばしば resource-management 機能を提供して、他のコンテナーに対する1つのコンテナーのアクティビティーの影響を制限します。 [...]
仮想マシンとコンテナーが異なるすべてを理解したいと思います。
仮想化テクノロジを使用すると、受け渡すことができるパッケージは仮想マシンであり、オペレーティングシステム全体とアプリケーションが含まれます。 3つの仮想マシンを実行する物理サーバーには、ハイパーバイザーとその上で実行される3つの個別のオペレーティングシステムがあります。
対照的に、Dockerのように3つのコンテナー化されたアプリケーションを実行するサーバーは、単一のオペレーティングシステムを実行し、各コンテナーは他のコンテナーとオペレーティングシステムカーネルを共有します。オペレーティングシステムの共有部分は読み取り専用ですが、各コンテナには書き込み用の独自のマウント(つまり、コンテナにアクセスする方法)があります。つまり、コンテナは仮想マシンよりもはるかに軽量で、使用するリソースがはるかに少なくなります。
他に何が知りたいですか?正確にはどの詳細が欠けていますか?