Docker は永続ストレージと非永続ストレージの両方をサポートします。
非永続ストレージ 各コンテナにはローカル ストレージが自動的に割り当てられます。デフォルトでは、コンテナ内のすべてのファイルとディレクトリがこのストレージに保存されます。非永続ストレージはコンテナの一部であり、コンテナと同じライフサイクルを持ちます。つまり、非永続ストレージはコンテナの作成時に作成され、コンテナの削除時に削除されます。 Linuxシステムでは、ストレージディレクトリは/var/lib/docker/です。
全体的に、Overlay2 ドライバーはますます人気が高まっており、将来的にはほとんどのプラットフォームで推奨されるストレージ ドライバーになる可能性があります。 持続性 コンテナ内にデータを保持するための推奨される方法は、ボリュームを使用することです。つまり、最初にボリュームを作成し、次にそのボリュームをコンテナにマウントします。この時点で、ボリュームはコンテナ ファイル システム内のディレクトリにマウントされ、ディレクトリに書き込まれたすべてのコンテンツがボリュームに書き込まれます。コンテナが削除されても、ボリュームとその上のデータはそのまま残ります。 下の図に示すように、Docker ボリュームはコンテナの /code ディレクトリにマウントされます。 /code ディレクトリに書き込まれたデータは実際には Docker ボリュームに書き込まれ、この Docker ボリュームはコンテナが削除された後も存在し続けます。その他のディレクトリは一時的なローカル ストレージを使用します。 ボリュームは、基本的に Docker ホスト上のディレクトリです。 Docker ホスト内のディレクトリがコンテナ ファイル システム内のディレクトリにマウントされた後、コンテナ ファイル システム内のディレクトリを操作すると、実際には対応する Docker ホスト上のディレクトリを操作することになります。つまり、コンテナはコンテナのファイルシステムにアクセスできるだけでなく、コンテナが配置されている Docker ホストのファイルシステムにもアクセスできるようになります。 「自分の目で確かめてください ボリュームの作成と表示
デフォルトでは、Docker は新しいボリュームを作成するときに組み込みのローカル ドライバーを使用します。このドライバーを使用すると、作成されたボリュームは、コンテナーが配置されている Docker ホストでのみ使用できるようになります (上記ではローカル ドライバーが使用されます)。 ローカル ドライバーに加えて、-d パラメーターを使用して別のドライバーを指定することもできます。サードパーティのドライバーもプラグインを通じて接続できます。これらのドライバーは高度なストレージ機能を提供し、Docker 用の外部ストレージ システムを統合します。ボリューム プラグインは、ブロック ストレージ、ファイル ストレージ、オブジェクト ストレージなどをカバーします。
検査コマンドは、対応するボリュームに関する詳細情報を出力します。ドライバーとスコープの両方がローカルの場合、ボリュームはデフォルトのローカル ドライバーを使用して作成され、現在の Docker ホスト上のコンテナーでのみ使用できることを意味します。マウントポイントは、Docker ホスト上のボリュームの場所を示します。ローカル ドライバーを使用して作成されたボリュームには、Docker ホスト上に専用のディレクトリがあります。 Linux では、/var/lib/docker/volumes ディレクトリにあります。
VOLUMNはDockerfileで使用できます
上記のコマンドは、新しい独立したコンテナを作成し、コンテナ内の /vol ディレクトリを bizvol という名前のボリュームにマウントします。コンテナのファイルシステムに /vol ディレクトリが存在しない場合は作成されます。すでに存在する場合はそれが使用されます (その内容がボリュームの内容になります)。同様に、システムに bizvol というボリュームが存在しない場合は、このコマンドによってそのようなボリュームも作成されます。そのようなボリュームがすでに存在する場合は、それが使用されます。 このコンテナを削除しても、ボリューム bizvol はまだ存在します。さらに、コンテナの実行中に /vol ディレクトリに書き込んだデータもこのボリュームに保存されます。以下に示すように、コンテナの実行中に、最初にデータが /vol/file に書き込まれ、その後コンテナが終了して削除されます。その後、ボリュームが配置されているディレクトリを確認し、作成されたファイルと書き込まれたデータがまだ残っていることを確認します。 さらに深く 上記のボリュームの説明は、永続性の観点からのものです。ボリュームのもう 1 つの主要な機能は、コンテナ ファイル システムとホスト ファイル システムを「接続」することです。これにより、コンテナ内の指定されたディレクトリに作成されたファイルにホストからアクセスでき、ホスト上の指定されたディレクトリ内のファイルにコンテナ内のプロセスからアクセスできるようになります。それで、これはどのように行われるのでしょうか? ここでは主に Linux のバインドマウント メカニズムが使用されます。その主な機能は、指定されたディレクトリにディレクトリまたはファイルをマウントすることです。さらに、マウント ポイントで実行する後続の操作は、マウントされたディレクトリまたはファイルに対してのみ実行され、元のマウント ポイントの内容は非表示になり、影響を受けません。バインドマウントは、実際には inode の置換プロセスです。たとえば、mount --bind /home /test を実行すると、/home が /test にバインド モードでマウントされます。この操作は、実際には /test を /home の inode にリダイレクトすることと同じです。したがって、/test ディレクトリを変更すると、実際には /home ディレクトリの inode が変更されます。 したがって、「コンテナ プロセス」が作成され、コンテナの rootfs が準備された後、chroot の前に、ボリュームで指定されたホスト ディレクトリを、ホスト上の指定されたコンテナ ディレクトリに対応するディレクトリにマウントするだけで済みます (この時点では、コンテナ プロセスは常にホスト上のファイル システム全体を参照でき、このマウント操作の実行時にコンテナが作成されているため、マウント名前空間はこの時点で有効になっているのと同じであり、マウント イベントはコンテナ内でのみ表示されます)。 ここでのコンテナ プロセスは、アプリケーション プロセス (ENTRYPOINT+CMD) ではなく、Docker によって作成されたコンテナ初期化プロセス (dockerinit) です。 dockerinit は、ルート ディレクトリの準備、デバイスとディレクトリのマウント、ホスト名の構成など、コンテナー内で実行する必要がある一連の初期化操作を完了する役割を担います。最後に、execv() システム コールを通じて、プロセスは自身を置き換え、コンテナー内で PID=1 のプロセスになります。 「ボリュームは指定されたコンテナ ディレクトリにマウントされ、ホスト上の対応するディレクトリは読み取りおよび書き込み可能なレイヤーにあるため、docker commit 中に送信されますか? いいえ。これは主に、docker commit がホスト空間で発生し、マウントがコンテナ内で発生し、マウント名前空間の分離によりこのマウントがホストに影響を与えないためです。つまり、ホスト上にそのようなマウントはありません。したがって、コミット中に送信されるのは、/test が実際には読み取りおよび書き込み可能なレイヤーに作成されるため、空のディレクトリのみです (マウント名前空間はマウント関連にのみ影響するため、この作成はマウント名前空間の影響を受けません)。 これを試してみましょう。まず、コンテナを起動し、コンテナ内の /test ディレクトリにマウントされたボリュームをコンテナが使用できるようにします。次に、コンテナの /test ディレクトリに test.txt という名前の新しいファイルを作成します。 次に、ボリュームの場所に移動して、対応する test.txt ファイルが作成されているかどうかを確認します。結果には、test.txt ファイルが作成されたことが示されています。その後、読み取りおよび書き込み可能なレイヤーに対応するディレクトリに移動して、test.txt ファイルがあるかどうかを確認します。結果には、テスト ディレクトリは存在しますが、test.txt ファイルは存在しないことが示されています。したがって、docker commit を実行すると、空のテスト ディレクトリのみが送信されます。 一般的なコマンドの概要
この記事はWeChatの公開アカウント「Multi-Select Parameters」から転載したものです。以下のQRコードからフォローできます。この記事を転載する場合は、Multi-Select Parameters の公開アカウントにご連絡ください。 |
<<: IDC: 世界のエッジコンピューティング市場は2024年に2,506億ドルに達する
>>: Ansible の Kubernetes モジュールを使用したコンテナ オーケストレーションの自動化
知識支払いの時代では、知識の獲得はよりシンプルで便利になりました。学生でも会社員でも、多くの知識ベー...
SEO プロセスに精通している多くのウェブマスターは、従来の検索エンジン最適化戦略には、キーワードの...
edgenat は特別なことをしています: クリスマス プロモーション、すべての VPS が 40%...
はじめに:インターネットマーケティングは、すべての企業が緊急に解決しなければならない問題です。多くの...
1. はじめにバージョン 1.0 以降、Kubernetes では、ストレージ プロビジョニングの独...
国内のマーチャント80vpsは、新しいプラットフォームhttps://mcp.80vps.comに、...
百度製品の比重は常に非常に高いが、百度の三大製品である百科、知道、鉄破については、百度知道と鉄破が外...
友人が私のブログに「フレンドリー リンクの交換は今でも有効ですか?」というメッセージを残しました。こ...
ロシアのホスティング会社、King Servers BV をご紹介します。同社の主な業務は、仮想ホス...
大手ウェブマスターなら誰でも、新しいサイトでも古いサイトでも、友好的なリンクを交換する必要があること...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス鄧超は「走れ!男」の演技...
時代の発展とともに、あらゆるものは進化し続けます。人間の思考も同様です。SEO も同様です。ランキン...
Bitronictech は 2007 年に設立されたと主張する企業です。ドメイン名、SSL 証明書...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスBaiduはBaidu ...
cmivps は、年間高帯域幅の香港 VPS に大幅割引を提供します。年間支払いの場合は 30% オ...