この記事では、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 サイトの他の関連記事を参照してください。

小さなプロジェクトまたは開発環境でDockerを選択し、大規模なプロジェクトまたは生産環境でKubernetesを選択します。 1.ドッカーは、迅速な反復とテストに適しています。2。Kubernetesは、大規模なアプリケーションの管理と拡張に適した強力なコンテナオーケストレーション機能を提供します。

Linuxは、豊富なツールとコミュニティサポートを提供するネイティブプラットフォームであるため、LinuxでDockerが重要です。 1. docker:sudoapt-getupdateとsudoapt-getinstalldocker-cedocker-ce-clicotainerd.ioを使用します。 2。コンテナの作成と管理:Dockerrun-D-Namemynginx-P80:80NginxなどのDockerrunコマンドを使用します。 3。DockerFileを書き込み:画像サイズを最適化し、マルチステージ構造を使用します。 4。最適化とデバッグ:DockerLogsとDockerexを使用します

Dockerはコンテナ化ツールであり、Kubernetesはコンテナオーケストレーションツールです。 1. Dockerパッケージアプリケーションとその依存関係は、Docker対応環境で実行できるコンテナに依存します。 2。Kubernetesはこれらのコンテナを管理し、自動展開、スケーリング、管理を実装し、アプリケーションを効率的に実行します。

Dockerの目的は、アプリケーションの展開を簡素化し、コンテナ化技術を通じてさまざまな環境でアプリケーションが一貫して実行されるようにすることです。 1)Dockerは、アプリケーションと依存関係をコンテナにパッケージ化することにより、環境の違いの問題を解決します。 2)DockerFileを使用して画像を作成して、アプリケーションがどこでも一貫して実行されることを確認します。 3)Dockerの作業原則は画像とコンテナに基づいており、Linuxカーネルの名前空間とコントロールグループを使用して、分離とリソース管理を実現します。 4)基本的な使用法には、DockerHubからの画像の引き込みと実行が含まれます。高度な使用法には、DockerComposeを使用したマルチコンテナーアプリケーションの管理が含まれます。 5)画像構築の故障やコンテナの障害などの一般的なエラーは、ログやネットワーク構成を介してデバッグできます。 6)パフォーマンス最適化構造

Ubuntu、Centos、およびDebianにDockerをインストールして使用する方法は異なります。 1)ubuntu:aptパッケージマネージャーを使用します。コマンドはsudoapt-getupdate && sudoapt-getinstalldocker.ioです。 2)Centos:Yum Package Managerを使用すると、Dockerリポジトリを追加する必要があります。コマンドは、sudoyumininstall-yyum-utils && sudoyum-config-manager - add-repohttps://download.docker.com/linです

LinuxでDockerを使用すると、開発効率が向上し、アプリケーションの展開を簡素化できます。 1)Ubuntu画像を引く:dockerpullubuntu。 2)ubuntuコンテナを実行:Dockerrun-itubuntu/bin/bash。 3)nginxを含むDockerFileを作成します:fromubuntu; runapt-getupdate && apt-getinstall-ynginx; expose80。 4)画像の作成:dockerbuild-tmy-nginx。 5)コンテナの実行:Dockerrun-D-P8080:80

Dockerは、Linuxのアプリケーションの展開と管理を簡素化します。 1)Dockerは、アプリケーションとその依存関係を軽量でポータブルコンテナにパッケージ化するコンテナ化されたプラットフォームです。 2)Linuxでは、DockerはCgroupと名前空間を使用して、コンテナの分離とリソース管理を実装します。 3)基本的な使用には、画像の引き込みと実行容器が含まれます。 DockerComposeなどの高度な使用は、マルチコンテナーアプリケーションを定義できます。 4)一般的に使用されるDockerLogsとDockerexecコマンドをデバッグします。 5)パフォーマンスの最適化は、マルチステージの構造により画像サイズを縮小することができ、DockerFileをシンプルに保つことがベストプラクティスです。

Dockerは、アプリケーションのパッケージ化、配布、およびアプリケーションの携帯性とスケーラビリティを改善するために使用されるLinuxコンテナテクノロジーベースのツールです。 1)DockerBuildおよびDockerrunコマンドを使用して、Dockerコンテナを構築および実行できます。 2)DockerComposeを使用して、マルチコンテナーDockerアプリケーションを定義および実行して、マイクロサービス管理を簡素化します。 3)マルチステージの構造を使用すると、画像サイズを最適化し、アプリケーションの起動速度を向上させることができます。 4)コンテナログの表示は、コンテナの問題をデバッグする効果的な方法です。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
