
1 年ほど前にどこかで読んだのですが、Docker コンテナを使用すると、アプリケーションの誤動作によってホスト OS ではなくコンテナがクラッシュするため、サーバーがより安定するそうです。
私の知る限りでは、アプリケーション自体ではOSをクラッシュさせることはできないそのためには、カーネル、ドライバー、またはハードウェアのバグが必要になります。
Docker 仮想化はホスト OS のクラッシュを防ぎますか?
答え1
仮想化はホスト OS のクラッシュを防ぐことはできませんが、リスク要因を低減するのに役立つ可能性があります。
Docker は、仮想化されたプログラムからホスト OS へのシステム コールを変換するインターフェイスにすぎません。そのため、1 つのコールまたは複数のコールの組み合わせが OS のバグに遭遇し、クラッシュする可能性があります。
このように、Docker では、仮想化されたプログラムが Docker 下では分離されていないため、従来の仮想マシンよりもこのような問題が発生する可能性が高くなります。ただし、呼び出しが 1 つではなく 2 つのインターフェースを経由して二重にチェックされるため、OS 上で直接実行する場合よりも、Docker 下でこの問題が発生する可能性は多少低くなります。
Docker は、最大 RAM や CPU など、仮想化プログラムにいくつかの制限を設けています。これにより、過負荷やリソースの飽和によるシステム クラッシュを回避できます。また、ホストのファイル システムを仮想化プログラムから隠すため (例外は常に可能)、プログラムによる破損を回避できます。