1.なぜマウントがあるのですか?
コンテナで実行中のアプリケーションはデータを生成する場合があります. データがコンテナに直接保存されている場合, コンテナが削除されると, コンテナ内のデータも一緒に削除されます. 例:
データベース コンテナを実行している場合、データベース コンテナに直接保存されているデータ ファイルは、コンテナを削除するとデータが失われる可能性があります。
データの損失を防ぐために、データをホスト マシンに保存できます。これは、コンテナー間のデータ共有に便利です。
2. マウント方法: 単一ファイル フォルダー データ ボリューム
1. 単一ファイル
コマンドは次のとおりです。
docker run -d --name cat4 \
--restart = 常に\
-v ~/server.xml:/usr/local/tomcat/conf/server.xml \
トムキャット:8
このコードは合計で次のようになります。
1. tomcat8 を実行する新しいコンテナーを作成しました。ホストが再起動すると、コンテナーが自動的に開始され、コンテナーに cat4 という名前が付けられるため、コマンドを入力してログを表示すると便利です。-d はバックグラウンド操作です。
2. ファイル マウント方法を使用して、ホスト マシンの server.xml ファイルをコンテナーの /usr/local/tomcat/conf/server.xml ファイルにマウントします。これは、/usr/local/tomcat/conf として理解できます。 /server.xml はショートカットに相当します
コンテナーの詳細は、次のコマンドで表示できます: docker inspect cat4
2.フォルダ
コマンドは次のとおりです。
docker run -d --name mysql \
-v /data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=ルート\
マリアド
このコードは合計で次のようになります。
1. 新しいコンテナーを作成し、mariadb を実行し、mysql という名前を付け、ホスト マシン上のフォルダーの /data/mysql フォルダーをコンテナーの /var/lib/mysql パスにマウントします。構成環境変数
2. このうち、/var/lib/mysql と MYSQL_ROOT_PASSWORD=root はミラー元に依存
作成が完了したら、docker inspect mysqlを実行してコンテナの詳細を表示することもできます
さらに、コマンドll /data/mysqlを実行して、マウントされたソース ファイルを表示することもできます。現時点ではデータがあります。
コマンドdocker rm -f mysqlを実行してコンテナーを削除することもできます。
コンテナーを削除した後、コマンドの実行を続行します: ll /data/mysql。ファイルがホスト マシンに存在するため、結果は一貫しています。
3.データ量
データ ボリュームの本質はやはりフォルダです. Docker はマウント フォルダを自動的に指定できますが, パスは深くランダムな文字が混在しているため, データ ボリュームを作成してエイリアスを付けることができます. パスを使用する場合は,エイリアスを使用して完全なフォルダー パスを示す場合、コマンドは次のようになります。
docker volume create my-vol は my-vol という名前のデータ ボリュームを作成します
docker volume lsでデータ ボリュームのリストを表示
docker inspect my-vol でデータ ボリュームの詳細を表示します。「/var/lib/docker/volumes/my-vol/_data」は、データを格納する実際のディレクトリです。
データ ボリュームを準備したら、フォルダーをマウントする方法と同様に、コンテナーを作成します。
docker run -d --name mysql1\
-v my-vol:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=ルート\
マリアド
/var/lib/mysql パスにマウントする my-vol を手動で指定します。コンテナーを削除する場合、データ ボリュームは削除されません。データ ボリュームと共にコンテナーを削除する場合は、後に --volumes を追加できます。次のような削除コマンド: docker rm -f mysql --volumes
マウントが手動で指定されていない場合、次のコードに示すように、新しいデータ ボリューム マウントが自動的に作成されます。
docker run -d --name mysql2\
-e MYSQL_ROOT_PASSWORD=ルート\
マリアド
コマンドdocker volume lsを使用してデータ ボリュームのリストを表示することもできます。指定されたマウント フォルダーのパスは非常に複雑です。