Dockerデータストレージのバインドマウントの詳細な説明

Dockerデータストレージのバインドマウントの詳細な説明

この記事を読む前に、Volumes について予備知識を身に付けておいてください。詳細については、こちらの記事を参照してください。

Docker データ ストレージ ボリュームの詳細な説明

デフォルトでは、コンテナ データの読み取りと書き込みはコンテナのストレージ レイヤーで行われます。コンテナが削除されると、そのコンテナ上のデータは失われます。したがって、コンテナ ストレージ レイヤーで書き込み操作が発生しないようにする必要があります。データの永続的なストレージを実現するには、データを保存するソリューションを選択する必要があります。現在、いくつかの方法があります。

  • ボリューム
  • バインドマウント
  • tmpfs マウント

次の図は、これら 3 つの手法を示しています。

バインドマウント

バインド マウント モードはボリュームと非常によく似ています。違いは、バインド マウント モードではホスト上の任意のファイルまたはフォルダーがコンテナーにマウントされるのに対し、ボリュームでは基本的に Docker サービスによって管理される領域 (デフォルトは /var/lib/docker/volumes の下のフォルダー) がコンテナーにマウントされる点です。

バインドマウントの使用方法はボリュームの使用方法と似ており、ホストファイルは-vまたは--mountパラメータを通じてコン​​テナーにマウントされます。次に例を示します。

--mountパラメータを使用する場合は、 type=bindを指定する必要があります。

$ docker run -d \
 --name=nginxtest \
 --mount type=bind、source=/usr/local/web、destination=/usr/share/nginx/html \ マウントタイプ=bind、source=/usr/local/web、destination=/usr/share/nginx/html \
 nginx:最新

上記の例では、ホスト上の /usr/local/web フォルダーをコンテナー内の /usr/share/nginx/html フォルダーにマウントします。

または-vパラメータを使用します:

$ docker run -d \
 --name=nginxtest \
 -v /usr/local/web:/usr/share/nginx/html \
 nginx:最新

マウントが成功すると、コンテナは /usr/share/nginx/html ディレクトリからデータを読み取ったり書き込んだりします。このディレクトリは実際には、ホストの /usr/local/web ディレクトリからデータを読み取ったり書き込んだりします。したがって、ボリュームまたはバインドマウントは、コンテナーとホストがファイルを共有する方法とも考えられます。

バインド マウントを使用してホスト ディレクトリをコンテナー内の空でないディレクトリにマウントすると、コンテナー内の空でないディレクトリ内のファイルは非表示になり、このディレクトリにアクセスするときにコンテナーがアクセスできるファイルはすべてホスト ディレクトリのものになります。これは、バインド マウント モードとボリューム モード間の動作上の最大の違いでもあります。

バインドマウントの使用シナリオ

こちらの記事を参照してください: Docker データストレージの概要

参考文献

https://docs.docker.com/storage/bind-mounts/

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Docker のデフォルトイメージとコンテナの保存場所を変更する方法
  • Dockerの永続ストレージとデータ共有の詳細な説明
  • Docker データ ストレージ ボリュームの詳細な説明
  • Docker ストレージ ドライバーの紹介
  • Dockerデータストレージの概要
  • Docker データ ストレージ tmpfs マウントの詳細な説明
  • Dockerサーバーのストレージリソースプール不足問題の解決

<<:  JDBCデータベースリンクと関連メソッドのカプセル化の詳細な説明

>>:  ログインスライダー検証を実装するJavaScript

推薦する

docker で golang イメージに基づいて ssh サービスを構築する方法

以下は、docker の golang イメージに基づいて ssh サービスを構築するためのコードで...

Windows Server 2008 64ビット MySQL5.6 インストール不要版 設定方法図

1 公式ウェブサイトから MySQL 5.6 バージョンの圧縮パッケージmysql-5.6.36-w...

React Router で履歴リダイレクトを使用する方法

react-routerでは、コンポーネント内のジャンプは<Link>で使用できます。し...

Linux 環境に mysql5.7.36 データベースをインストールするチュートリアル

ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...

MySQL交換パーティションの詳細な例

MySQL交換パーティションの詳細な例序文exchange パーティションを紹介する前に、まず my...

JS を使用して航空機戦争の小さなゲームを実装する

この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...

Gitlab-ci を使用してリモート マシンに継続的にデプロイする方法 (詳細なチュートリアル)

簡単に言うと、今日は Gitlab-CI を使用してリモート サーバーに自動的にデプロイする方法につ...

Node+socketでシンプルなチャットルーム機能を実現

この記事では、参考までに、シンプルなチャットルームを実装するためのnode+socketの具体的なコ...

DockerにMinIOをインストールするための詳細な手順

目次1. docker環境が正常かどうかを確認する2. miniIOイメージをダウンロードする3. ...

vue3.0 でカルーセル コンポーネントをカプセル化する手順

目次1: カプセル化の考え方2. 包装工程3: ドットインジケーター4: 左と右のインジケーター5:...

MySql テーブル、データベース、シャーディング、パーティショニングの知識の詳細な説明

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

HTML入力ボックスの最適化により、ユーザーエクスペリエンスと使いやすさが向上します。

ユーザーエクスペリエンスと使いやすさを向上させるために、入力ボックスなど、Web ページでユーザーが...

js でパズルゲームを実装する

この記事では、パズルゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内容は...

RedisとMemcacheの比較と選び方

最近 redis を使っていて、とても便利だと感じているのですが、インメモリ データベースを選択する...

Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

序文:この記事では、Ant Design Proログイン機能にグラフィック検証コードコンポーネントを...