VM vsベアメタルでドッカーコンテナーを実行する(ホスト上で直接))内部でドッカーコンテナーを実行する利点は何ですか?
VM内でdockerコンテナーを実行している企業について聞いたことがあります。特に、一部の組織がそれを実行しているとdocker会議で言及されています。どうして?
(ホスト上で実行されているDockerコンテナーと内部で実行されているDockerコンテナーの比較KVM)
では、なぜ誰もがDockerをKVM内で実行するのでしょうか。 KVMから不必要なパフォーマンスヒットを受けているのではないでしょうか。
ただし、状態を保存する方法が異なり、いずれかの方法の方が効率的です。また、コンテナの状態を100%確実に保存することはできません。
使用するVMおよび使用するコンテナーシステムによっては、コンテナーよりもVMの方が簡単に設定できる場合があります。これは、VM /コンテナーに専用のレイヤー2インターフェイスが必要な場合に特に当てはまります。ほとんどの場合、これはVMで行う方が簡単です。
VMはコンテナよりも優れています。コンテナは依然としてホストOSに対してネイティブシステムコールを行っています。つまり、それらは潜在的に直接これらのシステムコールのバグを悪用する可能性があります。 VMには独自のOSがあるため、VMははるかに分離されています。
これはほぼ同じですが、VMが適切に実行された場合、コンテナーは適切に実行された場合よりもスケーリングが少し良好であることがわかりました(おそらく、VMが正しく実行されたため、ハードウェアへのアクセス許可の問題がオフロードされ、コンテナーはソフトウェアを処理する必要があります)。
いいえ、正確ではありません。どちらもオフライン移行を実行できますが、多くのコンテナシステムはライブマイグレーションを実行できません(つまり、あるホストから別のホストにrunningコンテナを移動します)。ライブマイグレーションはvery合理的な規模で実行している場合、管理上の理由から重要です(ホストで更新を実行する必要がありますか?すべてを別のシステムに移行し、ホストを再起動し、2番目のホストからすべてを移行します最初に、それをリブートし、リバランスします。
仮想化は、単一の負荷に対してハードウェアが大きくなり、単一の強力なマシンに複数のタスクを実行させ、タスクを互いに分離させる必要性が明らかになったときに始まりました。 VMは、大きなホストを複数の小さなホストに分割するという、まさにそれを行う素晴らしい仕事をします。コンテナーは、ホストを使用可能なチャンクに分割しない方法であり、特定のアプリとワークロードを分離する方法です。
したがって、強力なマシンを使用している場合は、プロパティ(リソース、OSなど)が異なるいくつかの小さな部分に分割し、ユースケースに応じてこれらのVM内でアプリを実行します。
もちろん、これは絶対的な唯一の方法ではありませんが、VMとコンテナを混在させる最も明白なケースです。