Docker ファイルの階層化の詳細な分析 (詳細な例)
この記事では、docker ファイルの階層化に関する関連知識を提供します。この記事では、docker コンテナーの例を使用して、docker ファイルの階層化の原則について説明します。皆様のお役に立てれば幸いです。
知識の準備
- Docker は、実際には Linux カーネルのいくつかの機能を使用してリソースの分離を実現しており、ファイル システムもその 1 つです。 , リソースをより効率的に利用できるようにするために、Docker は階層ファイル システム構造を採用してコンテナのファイル システムを実装します。
- 個人的には、この原理は並行宇宙の概念に少し似ていると思います。私たちの宇宙には並行宇宙が存在すると信じている人もいます。つまり、私たちが行うさまざまな選択によって、さまざまな宇宙が分散され、継続して実行されると考えられています。 . 夢を見るということは、これらの平行世界の間を旅することです。ここでも似ています。イメージをパッケージ化して docker run で実行すると、これに基づいて別のユニバースが実際に作成されます。コンテナーが実行を続けると、コンテナーのコンテンツは元のイメージのコンテンツと同じになります。 . 物事には多くのズレや差異があり、徐々に独自の世界を形成していきます。
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 つのタイプがあります
LowerDir
これは、このイメージに基づくすべてのコンテナが同じファイル システム (イメージ レイヤー) を指すということです。コンテナはこのレイヤーを使用します。
それでは、このレイヤーはどこから来たのでしょうか? 使用する画像を見ることができます
MergedDir
これは、下位レイヤーと上位レイヤーを組み合わせた別のコンテナーです。コンテナ内に最終的なファイル システムを提供します
##UpperDir#これは、さまざまなコンテナの操作を記録し、下位レイヤの比較を通じて、マージ レイヤを生成できます
WorkDir
まだ深くは理解されていません
例
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}
UpperDir、これに注意してくださいミラーの上位層です。つまり、このレベルで変更を加えることができます。これは後で作成されるコンテナに影響します
コンテナのファイル システム情報を表示します
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
ホストからコンテナのコンテンツを変更します。
- From 上記の実験から、上位層が追加されたコンテンツであり、コンテナ内の変更を反映するために下位層とマージされることがわかります。では、上位層を直接変更してコンテナを操作できるのでしょうか?
-
upper が配置されているディレクトリにディレクトリ デモを追加し、その中のファイルをタッチします
# tree -L 2 ./ ./ ├── demo │ └── mytest.log ├── root └── tmp └── hello.txt
ログイン後にコピーコンテナから作成したファイルが表示されるかどうかを確認します
/demo # pwd /demo /demo # ls mytest.log
ログイン後にコピーこれが有効になっていることがわかります。そのため、このコンテナを初期化したい場合は、上位層のすべてのコンテンツを直接削除できます。
アプリケーション
- ソフトウェア インストール トレースの検索
-
これまでのプロジェクトの過程で、お客様は常に次の情報を提供する必要がありました。エージェント ソフトウェアがどのようなコンテンツを変更するかを顧客に提供するこれより良い方法は見つかりませんでした。この Docker 階層化ファイルのアプリケーションから判断すると、コンテナーにエージェントをデプロイでき、どのディレクトリとどのディレクトリが変更されるかが一目でわかります。ソフトウェアが変更するファイル。
コンテナをすばやく復元します。 - コンテナ ファイル システムをすばやく操作します。
- 基盤となるファイルを保護します。システムは破壊されていません
- #ホスト領域の節約
-
# 推奨される学習: 「
docker ビデオ チュートリアル #」
以上がDocker ファイルの階層化の詳細な分析 (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop< container_name>コマンドを使用するDocker Kill< container_name>ホストターミナルのコマンド(フォース出口)

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]< Container Path> <ホストパス>。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

Dockerコンテナを再起動する方法:コンテナID(Docker PS)を取得します。コンテナを停止します(docker stop< container_id>);コンテナを起動します(docker start< container_id>);再起動が成功していることを確認します(Docker PS)。その他の方法:Docker Compose(Docker-Compose Restart)またはDocker API(Dockerドキュメントを参照)。

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

Dockerプロセス表示方法:1。DockerCLIコマンド:Docker PS; 2。SystemDCLIコマンド:SystemCTL Status Docker; 3。CLIコマンドを作成するDocker:Docker-Compose PS。 4。プロセスエクスプローラー(Windows); 5。 /procディレクトリ(Linux)。
