Docker で開発プロジェクトに取り組んでいる間、開発者は通常、コードに変更を加え、コンテナーを再構築せずにすぐに変更が反映されることを望んでいます。この状況では、バインド マウントを使用して、ローカル ホスト マシン上のコード ディレクトリをコンテナーにマウントします。これにより、ホストで行われた変更がすぐにコンテナー内に反映されます。また、データが失われないため、コンテナーが削除または拒否された場合に役立ちます。
この記事では、次のことを説明します。
Docker バインド マウントとは何ですか?
Docker バインド マウントにより、ユーザーはホスト マシン上の特定のファイル/ディレクトリをコンテナー内のファイル/ディレクトリにマップできます。このようにして、ユーザーはホストとコンテナの間でデータを共有でき、コンテナが停止または削除された後でもデータを保持できます。共有ディレクトリまたはファイル内のファイルに加えられた変更は、コンテナとホスト マシンの両方から表示されます。
Docker でのバインド マウントのしくみ
例を挙げて、Docker で bind-mount がどのように機能するかを見てみましょう。空のディレクトリがあるとします。 テスト 」にある「 C:\ドッカー 」をローカル システムで実行します。ここで、「 テスト ' ディレクトリの内容 ' /アプリ 」 特定のコンテナー内から。この例では、公式の Docker イメージからコンテナーを実行します。 nginx 」を実行し、バインド マウントを使用して、特定のディレクトリをホスト マシンからコンテナーにマウントします。
理解を深めるために、提供されている手順に従ってください。
ステップ 1: マウント ディレクトリをホスト マシンからコンテナーにバインドする
まず、「 docker run -d –name <コンテナ名> -v <ソースパス>:<宛先パス> <イメージ名> 」コマンドを実行してコンテナを実行します。ホスト マシンのマウント ディレクトリをコンテナーにバインドします。
ドッカー実行 -d - 名前 マイコント -の 子: / ドッカー / テスト: / アプリ nginx:最新
ここ:
-
- 「 -d 」オプションは、コンテナをバックグラウンドで実行するために使用されます。
- 「 -名前 」は、コンテナー名を定義するために使用されます。
- 「 マイコント 」はコンテナ名です。
- 「 -の 」 オプションは、ホスト マシン上のソース ディレクトリをコンテナー内のターゲット ディレクトリにマップするボリュームをコンテナー内に作成します。
- 「 C:/ドッカー/テスト 」は、ソース ディレクトリ (ローカル マシン) のパスです。
- 「 /アプリ 」は、ターゲット ディレクトリ (コンテナー) のパスです。
- 「 nginx:最新 」は最新の Docker イメージです。
このコマンドはコンテナーを作成し、コンテナーがホスト マシンからファイルにアクセスできるようにして、データの永続性の管理を容易にしました。
ステップ 2: ホスト マシンのソース ディレクトリにファイルを作成する
次に、ソース ディレクトリ パスに移動します。 C:/ドッカー/テスト 」をホスト マシン上で実行し、その中にプレーン テキスト ファイルを作成します。たとえば、「 デモ ' ファイル:
ステップ 3: コンテナ内のホスト マシン ファイルにアクセスする
次に、以下に示すコマンドを入力して、コンテナーのコンテンツにアクセスし、その中でコマンドを実行します。
ドッカー エグゼクティブ -それ マイコント バッシュ
そうすると、コンテナのシェルが開きます。
その後、提供されたコマンドを使用してコンテナーのコンテンツを一覧表示します。
ls
上のスクリーンショットでは、コンテナーのすべてのコンテンツを確認できます。目的のディレクトリを選択し、そこに移動します。
「」にリダイレクト アプリ 」 ディレクトリ:
CD アプリ
次に、「 アプリ 」 ディレクトリの内容を調べて、ローカル マシン ファイルが使用可能であることを確認します。
「 デモ.txt 」ファイルはコンテナー内で使用可能であり、アクセスできます。
ステップ 4: コンテナー内にファイルを作成する
次に、「 触る ' 指図:
触る new.txt
私たちは「 new.txt ' ファイル。
次に、以下のコマンドを使用して、新しく作成されたファイルを確認します。
ls
ファイル「 new.txt 」がコンテナ内に正常に作成されました。
ステップ 5: ローカル システム上のファイルを確認する
最後に、ローカル マシンのパスに移動し、「 new.txt 」ファイルが利用可能かどうか:
ご覧のとおり、「 new.txt 」ファイルがローカル マシンで利用可能であり、アクセスできます。これは、変更がローカル マシンにも反映されていることを示しています。
ステップ 6: Docker コンテナーを削除する
次に、「 ドッカーRM 」コマンドとコンテナー名:
ドッカー RM マイコント
「 マイコント ” コンテナが正常に削除されました。
ステップ 7: データがローカル マシンに保持されていることを確認する
コンテナを削除した後、データがローカル マシンに保持されているかどうかを確認します。
ご覧のとおり、bind-mount コンテナーを削除した後でも、変更は保持されています。
結論
Docker バインド マウントは、ディレクトリまたはファイルをホスト システムからコンテナーにマップするために使用されます。ホスト上の指定されたディレクトリまたはファイルとコンテナのファイルシステムの間にリンクを作成します。コンテナの外部に保存されているファイルを簡単かつ簡単に処理または操作できます。共有ディレクトリまたはファイル内のファイルに加えられた変更は、ホストとコンテナーの両方に反映されます。この記事では、Docker バインド マウントとその Docker での動作について説明しました。