Docker は、アプリケーションを迅速かつ効率的にデプロイおよび管理するために使用できる仮想化テクノロジです。その中心的なコンセプトは、アプリケーションとその依存ライブラリ、フレームワークなどをポータブルなコンテナにパッケージ化し、アプリケーションとシステム間の依存関係を回避し、アプリケーションがあらゆる環境で実行できるようにすることです。
Docker は、次の 3 つの主要な側面で分離を実現できます。
Docker は、Linux が提供する名前空間テクノロジを使用して、コンテナ間の分離を確保します。異なる名前空間を使用することにより、Docker は異なるプロセス、ファイル システム、ネットワーク、ポートなどのリソースを分離できます。
たとえば、各コンテナーには独自のファイル システムがあり、各コンテナーは独自のファイル システムのみを参照でき、他のコンテナーのファイル システムにはアクセスできません。これにより、各コンテナのアプリケーションとデータが分離され、相互に干渉しないことが保証されます。
Docker は、Linux のコントロール グループ (cgroup) テクノロジも使用して、コンテナーのリソース使用状況を管理します。 cgroup を使用することで、Docker はコンテナーが使用する CPU、メモリ、ディスク、その他のリソースを制御し、その使用を制限できます。これにより、コンテナー間のリソースが互いに競合しないようになり、コンテナーが多くのリソースを消費することによるシステム全体のクラッシュが防止されます。
たとえば、コンテナが使用する CPU 時間とメモリ サイズを制限して、コンテナが CPU とメモリを過剰に消費して、他のコンテナ内のアプリケーションの応答が遅くなったり、クラッシュしたりすることを回避できます。
Docker は、コンテナごとに独立したファイル システムも提供し、Union File System (UnionFS) テクノロジーを使用して、ホスト システムのファイル システムとコンテナーのファイル システムを結合します。コンテナ ファイル システムがマージされます。これにより、各コンテナーが独自の独立したファイル システムを持ち、他のコンテナーやホスト システムのファイル システムに影響を与えなくなります。
たとえば、他のコンテナやホスト システムのライブラリに影響を与えることなく、コンテナ内でさまざまなシステム ライブラリを使用できます。これにより、コンテナー間のアプリケーションに依存関係がないことが保証され、依存関係が原因でコンテナーが適切に実行されなくなります。
要約すると、Docker は主に Linux が提供する名前空間、コントロール グループ、およびファイル システム テクノロジを利用することで分離を成功裏に達成できます。これらのテクノロジーにより、各コンテナーが独立したプロセス、ファイル システム、リソース制限を持つことが可能になり、コンテナーとホスト システム間の干渉が回避され、アプリケーションが効率的に実行できるようになります。
以上がなぜ docker は分離を実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。