Docker がマウントを実装する 3 つの方法

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を使用してデータ ボリュームのリストを表示することもできます。指定されたマウント フォルダーのパスは非常に複雑です。

おすすめ

転載: blog.csdn.net/weixin_72125569/article/details/126920724