完全な VM を使用するよりも LXC コンテナーを選択する方がよい場合について、決心しようとしています。
何らかの形でいくつかの議論をもたらす可能性のある正確なユースケースを念頭に置いていますか?
ハードウェア制御なしでアプリケーションを実行するために、LXC はより「PaaS」指向ですか? インフラストラクチャ制御が必要な場合、常に「IaaS」の観点から VM を使用する必要がありますか?
よろしく、
完全な VM を使用するよりも LXC コンテナーを選択する方がよい場合について、決心しようとしています。
何らかの形でいくつかの議論をもたらす可能性のある正確なユースケースを念頭に置いていますか?
ハードウェア制御なしでアプリケーションを実行するために、LXC はより「PaaS」指向ですか? インフラストラクチャ制御が必要な場合、常に「IaaS」の観点から VM を使用する必要がありますか?
よろしく、
LXC は、強化された chroot 監獄のようなものです。議論のために、軽量 VM と見なすことができます (まったく VM ではありませんが)。
一時的なインフラストラクチャ上で動作するように設計されたアプリケーションを作成する努力を既に行っている場合は、LXC を使用すると、より少ないオーバーヘッドでそれを実行できます。
私にとって、LXC の最もクールな点は、LXC を中心に成長しているコミュニティです。dockerのようなものを検討してください。docker イメージは比較的移植性があります。物理ハードウェア上、またはデスクトップで実行されている VirtualBox VM 内、または Amazon または Rackspace が提供する VM 内で同一のコンテナーを構成するためのツールを提供します。これにより、一度書き込めばどこでも実行できるという夢に近づくことができます。
IaaS に VM は必要ないと思います。LXC では、CPU シェア数とメモリ ユーザー制限を定義できます。
VM は非常に重いため、たとえば PHP/MySQL/Apache の場合、VM は 1 つになります。LXC は軽いので、3 つの LXC を持つことができるので、スケーリングにははるかに適しています (mysql を分割する必要がある場合は、mysql LXC を複製するだけです)。
LXC は VM よりもはるかに高速に起動し、VM よりもコンテナーごとに使用するホスト リソースが少ないため、多くの分離されたプロセスを 1 つのホストにパックしたり、頻繁に起動したりするのに最適です。
ユース ケースの 1 つは、再現可能な環境で単体テストを実行することです ( Dockerが提供するように、スナップショット ファイル システムと組み合わせた場合)。コンテナ全体をスピンアップし、テストを実行し、テストを実行するのと同じくらい速くシャットダウンできます。LXC の利点は、テストのカーネル以外のすべての依存関係がコンテナー内にあることです。Linux の別のフレーバーである可能性もあります (たとえば、ホストは Ubuntu で、コンテナーは Centos を実行できますが、ホストのカーネルを共有する必要があります)。
私にとって lxc の利点は、非常に小さな環境を作成できることです。そのため、実行するアプリが 1 つしかない場合は full を使用します。環境で複数のアプリを実行する場合は、VM の方が適しています。VM が優れているもう 1 つのケースは、ホスト カーネル以外のカーネルを使用する場合です。
私にとって lxc は本当に軽い VM システムです。速度とサイズが向上します。しかし、制約はあなたが必要とするものではありません。