この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 9379|答える: 0

Dockerボリュームがマウントされた時点では、ファイルやフォルダは存在しません

[リンクをコピー]
掲載地 2021/11/08 9:20:35 | | |
バックグラウンド

Dockerボリュームは、Dockerコンテナを起動する際にイメージ内の元のファイルを上書きするために、設定ファイルなどのファイルを動的にマウントできますが、ホストにまだ存在しないフォルダやファイルをコンテナにマウントした場合はどうなるのでしょうか? LZはそのような問題に直面したため、自ら練習し、実験結果を以下のように記録しました。

フォルダーマウント

フォルダマウントに関するDockerの挙動は均一で、以下のように通りです。

  • もしフォルダが存在しない場合は、まずそのフォルダが作成されます(または複数レベルフォルダーの場合は再帰的に作成されます)
  • ホストのフォルダ内容でコンテナ内の内容を上書きします


詳細は以下の通りです。

ホストのフォルダは存在し、空ではありません

ホスト
コンテナ
マウント結果
空でないフォルダAが存在します存在しないフォルダBまずContanierでフォルダBを作成し、その後フォルダAのすべてのファイルをBにコピーします
空でないフォルダAが存在します空でないフォルダーBが存在します。まず、コンテナ中国語フォルダBの元の内容を空にし、次にAの中国語コピーをBにコピーします

コンテナ内のフォルダBが存在するかどうかにかかわらず、AはBの内容を完全に上書きします

ホスト上のフォルダは存在しますが空です

ホスト
コンテナ
マウント結果
存在する空のフォルダA空でないフォルダーBが存在します。コンテナ中国語フォルダーBの中身は空にされます

コンテナ内の対応するフォルダの内容は空になります

ホストフォルダは存在しません

ホスト
コンテナ
マウント結果
存在しないフォルダA空でないフォルダーBが存在します。ホストでフォルダAを作成し、コンテナの中国語フォルダBの内容を空にします
存在しないフォルダA/B/C空でないフォルダーBが存在します。ホストでA/B/Cのフォルダを作成し、コンテナの中国語フォルダBの内容を空にします

コンテナ内の対応するフォルダの内容は空になります

概要

ホストフォルダは確実にコンテナの中国語フォルダを上書きします:

ホスト
コンテナ
マウント結果
フォルダは存在しません/フォルダは存在しますが空ですフォルダは存在しません/存在しますが空です/存在しますが空ではありません容器の中国製のピースが覆われ(空に)
フォルダは存在し、空ではありませんフォルダは存在しません/存在しますが空です/存在しますが空ではありませんコンテナ中国語フォルダの内容は上書きされます(元の内容は空にされ、ホスト側のフォルダの内容も上書きされます)

ファイルマウント

ファイルマウントとフォルダマウントの最大の違いは以下の通りです:

  • Dockerはホストに存在しないファイルをコンテナ内に既に存在するファイルへのマウントを禁止しています
  • ファイルのマウントは同じフォルダ内の他のファイルには影響しません

さらに、その上書き動作はフォルダマウントと整合しており、すなわち:

  • コンテナ内のファイルの内容をホスト上のファイルの内容で上書きします


詳細は以下の通りです。

ホスト

ホスト
コンテナ
マウント結果
存在しないファイルconfigA.jsすでに存在する文書congfigB.jsエラー、ディレクトリをファイルにマウントしようとしていますか?(またはその逆ですか?) 指定されたホストパスが存在し、期待されるタイプかどうかを確認してください。 ホスト上で同時に2つの空のディレクトリconfigA.jsとconfigB.jsを生成しますが、コンテナは起動できません

ホスト

ホスト
コンテナ
マウント結果
プレゼントファイルconfigA.js現在のファイルcongfigB.jsコンテナ中国語アイテムconfigB.js同じままですが、ファイルの内容はcongfigA.jsの内容で上書きされます
プレゼントファイルconfigA.js存在しないファイルcongfigB.jsconfigB.js configA.jsファイルの内容を含むコンテナ内の新しいファイルは、そのファイル内の他のファイルconfigB.js変更されずに残ります

概要

ホスト上のファイルは常にコンテナの中国語フォルダを上書きします

ホスト
コンテナ
マウント結果
存在しないファイル既に存在する文書禁止行為
現存する文書存在しないファイル/すでに存在するファイル追加/上書き(存在しないディレクトリを作成する)

結論

フォルダーマウント

  • 存在しないフォルダや空のフォルダをコンテナにマウントさせれば、対応するフォルダは空になります
  • 空でないフォルダをコンテナに付けると、コンテナ内の元のフォルダが上書きされます

ファイルマウント

  • 存在しないファイルをコンテナ内にすでに存在するファイルにマウントすることは禁止されています
  • 既存のファイルはコンテナに添付されると上書きされ、存在しない場合はファイルが作成されます

応用シナリオ

  • 上記の分析から、フォルダマウントはフォルダ全体のファイルを上書きするために使われることがわかります。つまり、多数のファイルをコンテナにマウントする必要がある場合にも使えます。さらに、空のフォルダや存在しないフォルダがマウントされた場合は、一般的に逆に使われます。つまり、コンテナが起動された後、一部のファイル(ログなど)がコンテナ内のマウントポイントのフォルダの下に生成され、その時点で対応するホストのフォルダ内で直接確認できます。
  • ファイルマウントは、設定ファイルをマウントして実行時にデフォルト設定を動的に変更するためによく使われます。なぜなら、同じフォルダ内の他のファイルには影響しないため、単一のファイルだけを上書きするからです。

転属先:ハイパーリンクのログインが見えます。

(終わり)




先の:Elasticsearchはelasticdumpを使ってデータのバックアップと移行を行います
次に:Docker POI error exception solution
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com