dockerのマウント方法にはどのようなものがありますか?
方法: 1. run コマンドを使用します。構文は「docker run --name test1 -it -v」です。 2. dockerfile の VOLUME 命令を使用してマウント ポイントを作成します。構文は「VOLUME」です。 ["/data1" ,"/data2"]"; 3. コンテナ共有ボリュームを使用します。
このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
Docker のマウント方法は何ですか?
VOLUME 命令を紹介する前に、次のシナリオ要件を見てみましょう:
1. コンテナーは、以下に基づいて作成されます。最後に、コンテナ ファイル システムには、イメージの読み取り専用レイヤと書き込み可能レイヤが含まれており、コンテナ内のプロセス操作のデータ永続性は、コンテナの書き込み可能レイヤに保存されます。コンテナーが削除されると、手動でバックアップしない限り (またはコンテナーに基づいて新しいイメージを作成しない限り) データは失われます。コンテナプロセスによって永続化されたデータはホスト上に保存できますか?この方法では、コンテナーが削除されても、データはまだ存在します。
2. Web アプリケーションを開発する場合、開発環境はホストに対してローカルですが、実行テスト環境は Docker コンテナ上に配置されます。
この場合、ホスト上のファイル (html、js など) を変更した後、それらをコンテナーに同期する必要があります。こちらの方が明らかに面倒です。
3. 複数のコンテナが一連の関連サービスを実行しますが、データを共有したい場合はどうすればよいでしょうか?
これらの問題に対しては、確かにさまざまな解決策を考えることができます。 Docker 自体は、ホスト上のディレクトリをコンテナ内のディレクトリ (マウント ポイントまたはボリュームと呼ばれます) に関連付けることができるメカニズムを提供します。コンテナ上のマウント ポイントの下のコンテンツはホストです。ディレクトリのコンテンツは次のようになります。 Linux システムでのマウント メカニズム。この場合、ホスト上のディレクトリの内容を変更するときに、コンテナを同期する必要はなく、コンテナに対して即座に反映されます。マウント ポイントは複数のコンテナで共有できます。
具体的な実装メカニズムを紹介しましょう。
最初に docker run コマンドを渡します
1. 次のコマンドを実行します: docker run --name test -it -v /home/xqh/myimage:/data ubuntu /bin/bash
-v フラグは、コンテナー (コンテナー内のディレクトリー) にマウント ポイント /data を設定し、ホスト上の /home/xqh/myimage ディレクトリーの内容を /data に関連付けます。
このようにして、コンテナーの /data ディレクトリに対する操作とホスト上の /home/xqh/myimage に対する操作は、これら 2 つのディレクトリが実際にホスト ディレクトリを指しているため、リアルタイムで完全に同期されます。
2. コマンドを実行します: docker run --name test1 -it -v /data ubuntu /bin/bash
上記の -v マークは、コンテナーのマウント ポイントを設定するだけです。関連するホスト ディレクトリを指定しません。このとき、docker はホスト上のディレクトリを自動的にバインドします。 docker Inspection コマンドを使用して表示できます。
xqh@ubuntu:~/myimage$ docker inspect test1 [ { "Id": "1fd6c2c4bc545163d8c5c5b02d60052ea41900a781a82c20a8f02059cb82c30c", ............................. "Mounts": [ { "Name": "0ab0aaf0d6ef391cb68b72bd8c43216a8f8ae9205f0ae941ef16ebe32dc9fc01", "Source": "/var/lib/docker/volumes/0ab0aaf0d6ef391cb68b72bd8c43216a8f8ae9205f0ae941ef16ebe32dc9fc01/_data", "Destination": "/data", "Driver": "local", "Mode": "", "RW": true } ],
上記の [マウント] の各情報は、コンテナー上のマウント ポイントの情報を記録します。「Destination」の値はコンテナーのマウント ポイント、「Source」の値は対応するホスト ディレクトリです。このメソッドに対応するホスト ディレクトリが自動的に作成されることがわかりますが、その目的はホスト上で変更することではなく、複数のコンテナで共有することです。
2 dockerfile を使用してマウント ポイントを作成する
上で紹介した docker run コマンドの -v フラグによって作成されたマウント ポイントは、作成されたコンテナに対してのみ有効です。 dockerfile の VOLUME ディレクティブを通じてイメージ内にマウント ポイントを作成できるため、イメージを通じて作成されたすべてのコンテナーにマウント ポイントが設定されます。もう 1 つの違いは、VOLUME コマンドによって作成されるマウント ポイントは、ホスト上の対応するディレクトリを指定できず、自動的に生成されることです。
#test FROM ubuntu MAINTAINER hello1 VOLUME ["/data1","/data2"]
上記の dockfile ファイルは、VOLUME 命令を通じて 2 つのマウント ポイント /data1 および /data2 を指定します。
この dockerfile によって作成されたイメージによって生成されたコンテナーを表示するには、docker Inspection を使用します。を実行すると、次の情報が表示されます。
"Mounts": [ { "Name": "d411f6b8f17f4418629d4e5a1ab69679dee369b39e13bb68bed77aa4a0d12d21", "Source": "/var/lib/docker/volumes/d411f6b8f17f4418629d4e5a1ab69679dee369b39e13bb68bed77aa4a0d12d21/_data", "Destination": "/data1", "Driver": "local", "Mode": "", "RW": true }, { "Name": "6d3badcf47c4ac5955deda6f6ae56f4aaf1037a871275f46220c14ebd762fc36", "Source": "/var/lib/docker/volumes/6d3badcf47c4ac5955deda6f6ae56f4aaf1037a871275f46220c14ebd762fc36/_data", "Destination": "/data2", "Driver": "local", "Mode": "", "RW": true } ],
2 つのマウント ポイントの情報が表示されます。
3 コンテナーの共有ボリューム (マウント ポイント)
次に、/data1 および /data2 ボリュームを test1 (既に作成されたコンテナー) と共有できる別のコンテナーを作成します。これは docker run で行われます。次のような --volumes-from タグを使用します。
は、
docker run --name test2 -it --volumes-from test1 ubuntu /bin/bash
のように、異なるミラーからのものにすることも、
docker run --name test3 -it --volumes-from test1 myimage /bin/bash
上記の 3 つ test1、test2、test3 の各コンテナには /data1 と /data2 という 2 つのディレクトリがあり、ディレクトリ内の内容は共有されており、いずれかのコンテナが内容を変更すると、他のコンテナもその内容を取得できます。
4 つのベスト プラクティス: データ コンテナ
複数のコンテナでデータ (永続データベース、構成ファイル、データ ファイルなど) を共有する必要がある場合は、特定のデータ コンテナの作成を検討できます。コンテナには 1 つ以上のボリュームがあります。
他のコンテナは、-volumes-from を通じてこのデータ コンテナのボリュームを共有します。
コンテナのボリュームは基本的にホスト上のディレクトリに対応するため、このデータ コンテナを起動する必要はありません。
例: docker run --name dbdata myimage echo "data container"
注: ボリュームがあり、コンテナ間でデータを共有する方が便利ですが、必要な問題もたくさんあります。アクセス許可の制御、データのバックアップ、ボリュームの削除などの解決策が必要です。これらの内容は次回以降の記事で紹介していきます。
推奨される学習: 「docker ビデオ チュートリアル 」
以上がdockerのマウント方法にはどのようなものがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop< container_name>コマンドを使用するDocker Kill< container_name>ホストターミナルのコマンド(フォース出口)

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]< Container Path> <ホストパス>。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

Dockerコンテナを再起動する方法:コンテナID(Docker PS)を取得します。コンテナを停止します(docker stop< container_id>);コンテナを起動します(docker start< container_id>);再起動が成功していることを確認します(Docker PS)。その他の方法:Docker Compose(Docker-Compose Restart)またはDocker API(Dockerドキュメントを参照)。

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]
