Docker コンテナは、Linux カーネル テクノロジの名前空間を通じて分離を実現します。「Linux 名前空間」メカニズムは、リソース分離ソリューションを提供します。各名前空間の下のリソースは透過的で、他の名前空間の下のリソースからは見えません。システム レベルでは、同じ pid を持つ複数のプロセスが存在します。
このチュートリアルの動作環境: linux7.3 システム、docker バージョン 19.03、Dell G3 コンピューター。
Docker は主に、分離を実現するために Linux カーネル テクノロジの名前空間に依存しています。Linux 名前空間メカニズムは、リソース分離ソリューションを提供します。
PID、IPC、ネットワーク、およびその他のシステム リソースはグローバルではなくなり、特定の名前空間に属します。各名前空間の下のリソースは透過的であり、他の名前空間の下のリソースには見えません。したがって、オペレーティング システム レベルでは、同じ pid を持つ複数のプロセスが存在します。システム内にプロセス番号 0、1、2 の 2 つのプロセスが同時に存在できますが、これらは異なる名前空間に属しているため、プロセス間で競合は発生しません。ユーザー レベルでは、ユーザー自身の名前空間に属するリソースのみが表示されます。たとえば、 ps コマンドを使用すると、ユーザー自身の名前空間にあるプロセスのみを一覧表示できます。このようにして、各名前空間は個別の Linux システムのように見えます。
#例は次のとおりです: プロセスの分離
コンテナの開始docker run -it -p 8080:8080 --name pai-sn pai-sn:snapshot /bin/bash
ps -ef
#ファイルの分離コンテナ内のルート ディレクトリで ls コマンドを実行します
コンテナ内 これらのフォルダーが含まれています
ホストは docker info を実行して、Docker が使用するファイル システムを確認します
Docker のバージョンは 20.10 です。 6. ストレージ ドライバーは overlay2 です。ストレージ ドライバーが異なれば Docker 内での動作も異なりますが、原理は似ています。
Docker ファイル システムは、mount によってマウントされます。 docker ps コマンド インスタンス id を実行します。
docker Inspection container_id | grep Mounts -A 20 を実行して、マウントします。ホスト マシン上のディレクトリで、ディレクトリ リスト
を確認し、これがコンテナのディレクトリと一致していることを確認します。このディレクトリに新しいディレクトリを作成して、コンテナ内に新しいディレクトリが表示されるかどうかを確認します。実際、ファイルの分離とリソースの分離はすべて、新しい名前空間にマウントすることによって行われます。
推奨される学習: 「
docker ビデオ チュートリアル以上がDocker コンテナの分離は何によって行われますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。