この記事では、docker ファイルの階層化に関する関連知識を提供します。この記事では、docker コンテナーの例を使用して、docker ファイルの階層化の原則について説明します。皆様のお役に立てれば幸いです。
各コンテナのファイル システム階層化ステータスは、docker Inspection [container-id] --format={{.GraphDriver}} から取得できます。
{map[LowerDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/merged UpperDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/diff WorkDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/work] overlay2}
主に 4 つのタイプがあります
これは、このイメージに基づくすべてのコンテナが同じファイル システム (イメージ レイヤー) を指すということです。コンテナはこのレイヤーを使用します。
それでは、このレイヤーはどこから来たのでしょうか? 使用する画像を見ることができます
これは、下位レイヤーと上位レイヤーを組み合わせた別のコンテナーです。コンテナ内に最終的なファイル システムを提供します
##UpperDirWorkDir
例
docker run -d alpine:latest
docker inspect alpine --format={{.GraphDriver}}
{map[MergedDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/merged UpperDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff WorkDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/work] overlay2}
コンテナのファイル システム情報を表示します
docker inspect 9a118484ba --format={{.GraphDriver}}
{map[LowerDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/merged UpperDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/diff WorkDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/work] overlay2}
コマンドラインを使用してコンテナファイルシステムの変更を確認できます
docker diff 9a118484ba
コンテナを操作していないため、現時点ではコンテナとイメージに違いはありません
別のコンテナを起動し、300 秒間スリープさせてから、コンテナに移動してファイル情報を変更します。
# docker exec -it ca91bb /bin/sh / # echo "helloWorld" > /tmp/hello.txt
コンテナ ファイル システムの変更を確認します。
docker diff ca91bbffb801 C /root C /root/.ash_history C /tmp A /tmp/hello.txt
ファイル システムに対して何かを行ったことを確認してください。これらの変更は記録されています。
これらのコンテンツは実際には UpperDir のディレクトリにあります。
tree -L 1 diff/ diff/ ├── root └── tmp2 directories, 0 files
ホストからコンテナのコンテンツを変更します。
upper が配置されているディレクトリにディレクトリ デモを追加し、その中のファイルをタッチします
# tree -L 2 ./ ./ ├── demo │ └── mytest.log ├── root └── tmp └── hello.txt
コンテナから作成したファイルが表示されるかどうかを確認します
/demo # pwd /demo /demo # ls mytest.log
これが有効になっていることがわかります。そのため、このコンテナを初期化したい場合は、上位層のすべてのコンテンツを直接削除できます。
これまでのプロジェクトの過程で、お客様は常に次の情報を提供する必要がありました。エージェント ソフトウェアがどのようなコンテンツを変更するかを顧客に提供するこれより良い方法は見つかりませんでした。この Docker 階層化ファイルのアプリケーションから判断すると、コンテナーにエージェントをデプロイでき、どのディレクトリとどのディレクトリが変更されるかが一目でわかります。ソフトウェアが変更するファイル。
# 推奨される学習: 「
docker ビデオ チュートリアル以上がDocker ファイルの階層化の詳細な分析 (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。