Dockerボリュームは、Dockerコンテナーによって作成および使用される永続データを処理するための推奨される方法です。 WindowsでDockerボリュームを作成する方法を説明することにより、これがどのように機能するかを見てみましょう。それらを管理する方法も学びます!
このブログ投稿には、TechSnipsの寄稿者であるMattMcElreathによって作成されたコンパニオンビデオがあります。お気軽に時計をお持ちになるか、テキストをご希望の場合はお読みください。
コンテナの永続データを保存する場合は、いくつかのオプションがあります。まず、バインドマウントの使用方法を説明します 。現在、 dataというフォルダにいます 私のC:\ 。このフォルダの内容を一覧表示すると、5つのテキストファイルがあることがわかります。

このフォルダをコンテナで利用できるようにしたい場合は、コンテナの起動時にマウントできます。
先に進み、docker run
を使用してコンテナを実行しましょう 。このコンテナをインタラクティブモードで実行してから、-V
を指定します 。ここでは、データフォルダーへのパスを入力し、その後にコロンを入力してから、このフォルダーをマウントするコンテナー内のパスを指定します。
このために、 C:\ shareddataを指定します フォルダ。次に、Windowsサーバーのコアイメージを指定し、最後に、コンテナー内に入ったらPowerShellを実行することを指定します。
docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell
新しいコンテナの中にいるので、 C:\の内容を一覧表示すると 、 shareddataがあることがわかります フォルダ。

そのフォルダに移動して、内容を一覧表示しましょう。これが私のコンテナホストにある5つのテストファイルです。

このフォルダーにファイルを作成することもできます。このファイルは、他のコンテナーまたはコンテナーホストで使用できます。先に進み、新しいアイテムを実行して、 containertestというファイルを作成しましょう。 。

上記のように、新しいファイルがコンテナ内から作成されていることがわかります。次に、このコンテナを終了します。exit
を実行してコンテナをシャットダウンします。 。
docker ps
を実行した場合 、現在実行中のコンテナがないことがわかります。

Dockerボリュームのデータの列挙
次に、コンテナホストからデータフォルダの内容を再度一覧表示します。

containertestというコンテナ内から作成された新しいファイルを確認できます。 。バインドマウントにはいくつかの制限された機能がありますが、ボリュームは私たちがやろうとしていることを達成するための好ましい方法です。ボリュームの使用を開始するには、同じコマンドを実行してコンテナーを起動できますが、今回はいくつかの小さな違いがあります。ボリュームを指定した場合、コンテナホストのファイルシステムのパスを使用する代わりに、 hostdataという単語を使用します。 作成して使用したいボリュームの名前として。
新しいコンテナ内から、 C:\の内容を一覧表示すると 、 shareddataというフォルダがあることがわかります。 。

そのフォルダの内容を一覧表示すると、空のボリュームを作成したため、現在は空です。それでは、 Ctrl-P-Qを実行してみましょう。 これにより、実行中のコンテナから削除されますが、バックグラウンドで実行し続けます。
コンテナホストから、docker volume ls
を実行します 。これにより、このコンテナホストの現在のボリュームが一覧表示されます。 hostdataというボリュームがあります 、docker run
で指定したときに作成されました コマンド。

docker ps
を実行した場合 実行中のコンテナが表示されます。

docker stop
を使用してそのコンテナを停止します 。現在、実行中のコンテナはありません。

docker rm
を実行して、停止したコンテナを削除します 。ボリュームをもう一度リストすると、 hostdata ボリュームは引き続き利用可能であり、新しいコンテナにマウントできます。

Dockerボリュームの作成
ボリュームを作成する別の方法は、docker volume create
を使用することです。 指図。名前を指定しない場合、dockerはランダムな文字の長いリストである名前を付けます。それ以外の場合は、ここで名前を指定できます。このボリュームをlogdataと呼びます。 。これで、ボリュームを再度リストすると、リストにあることがわかります。

これを新しいコンテナにマウントします。 docker run
を使用する 繰り返しますが、ボリュームには、作成したばかりのボリュームを指定して、 c:\ logdataにマウントします。 。
> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell
コンテナ内から、 logdataに移動します フォルダを作成し、いくつかのファイルを作成します。現在、このディレクトリにはファイルがないので、先に進んでファイルを作成してください。
PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File
これで、このディレクトリに2つのログファイルがあります。

Ctrl-P-Qを実行します 再度実行中にこのコンテナを終了します。そのコンテナの実行中に、同じボリュームがマウントされた新しいコンテナを起動します。
> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell
logdataでリストを実行する場合 新しいコンテナのフォルダには、共有されている2つのログファイルが表示されます。

ここで、このコンテナを終了します。実行中のコンテナが1つと、終了したコンテナが2つ残っているはずです。

次に、実行中のすべてのコンテナーを停止してから、docker rm
を実行します。 終了したすべてのコンテナを削除します。

ボリュームを再度リストします。 logdata ボリュームは、将来のコンテナにマウントするために引き続き使用できます。

実行する場合は、docker volume
を実行します 、コマンドの使用法に関するヘルプが表示されます。

Dockerボリュームの検査
すでにcreate
を見てきました 、それではinspect
に移りましょう 。 docker volume inspect
を実行した場合 logdataに対して ボリュームの場合、コンテナホスト上のボリュームへの物理パスであるマウントポイントを含む、そのボリュームのプロパティを返します。

Invoke-Item
を使用してそのフォルダを開きましょう 見てください。 logdataの下 フォルダには、 dataというフォルダがあります 。それを開くと、以前にコンテナから作成されたファイルを見ることができます。

Dockerボリュームの削除
ボリュームを削除するには、docker volume rm
を実行します。 、その後に削除するボリュームの名前が続きます。
> docker volume rm logdata
ここで、ボリュームを一覧表示すると、 logdata もうありません。

最後に、prune
を使用できます 未使用のローカルボリュームをすべて削除します。これにより、実行中または停止中のコンテナにマウントされていないすべてのボリュームが削除されます。

このコマンドには注意が必要なので、これを実行することを確認するための警告とプロンプトが表示されます。 Y
と入力すると Enterキーを押すと、削除されたボリュームが表示されます。
また、ボリュームをもう一度一覧表示すると、すべて削除されていることがわかります。

このブログ投稿では、WindowsでのDockerボリュームの管理の概要を理解しているはずです。 Dockerは優れたコンテナープラットフォームです。 Windowsのサポートと、Dockerボリュームを管理するための新たなスキルにより、止められないでしょう!