Windowsで簡単にDockerボリュームを作成する方法

Dockerボリュームは、Dockerコンテナによって作成および使用される永続データを処理するための推奨方法です。Windows上でDockerボリュームを作成する方法を説明し、それらを管理する方法について説明します!

このブログ投稿には、TechSnipsの投稿者であるMatt McElreathが作成した補足ビデオがあります。ご覧いただくか、テキストをご希望の場合は続けてお読みください!

永続データの保存

コンテナ用に永続データを保存する方法はいくつかあります。まず、バインドマウントを使用する方法を紹介します。現在、C:\dataというフォルダにいます。このフォルダの内容を表示すると、5つのテキストファイルがあることがわかります。

Multiple text files in the C:\data folder

このフォルダをコンテナで利用できるようにするには、コンテナを起動する際にマウントすることができます。

では、docker runを使用してコンテナを実行してみましょう。インタラクティブモードでこのコンテナを実行し、-Vを指定します。ここでは、データフォルダのパスを指定し、コロンを続けて、このフォルダをマウントしたいコンテナ内のパスを指定します。

これについて、C:\shareddataフォルダを指定します。次に、Windows Server Coreのイメージを指定し、最後に、コンテナ内でPowerShellを実行するように指定します。

docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell

新しいコンテナ内に入ったら、C:\の内容をリストアップすると、shareddataフォルダがあることがわかります。

Listing directory contents in a Docker container

そのフォルダに入って、内容をリストアップします。これは、コンテナホストにある5つのテストファイルです。

Files on the host

I can also create files in this folder, which will be available to other containers or my container host. Let’s go ahead and run a new item to create a file called containertest.

Creating a file on the container host

上記のように、新しいファイルがコンテナ内から作成されました。今度は、exitを実行してこのコンテナを終了します。

docker psを実行すると、現在実行中のコンテナはありません。

Looking for running containers

Dockerボリュームのデータの列挙

では、コンテナホストから再びデータフォルダの内容をリストアップしてみましょう。

Listing files on the container host

コンテナ内で作成されたcontainertestという名前の新しいファイルが見えます。ただし、バインドマウントには限定的な機能がありますので、ボリュームを使用することが推奨されます。ボリュームを使用するためには、同じコマンドを実行しますが、いくつかの小さな違いがあります。ボリュームを指定する部分では、コンテナホストのファイルシステムのパスの代わりに、作成して使用したいボリュームの名前としてhostdataを使用します。

新しいコンテナ内から、C:\の内容をリストアップすると、再びshareddataというフォルダがあることがわかります。

Listing files

そのフォルダの内容をリスト表示すると、現在は空です。なぜなら、空のボリュームを作成したからです。では、Ctrl-P-Qを実行して、実行中のコンテナから抜けますが、バックグラウンドで実行し続けます。

コンテナホストから、docker volume lsを実行します。これにより、このコンテナホスト上の現在のボリュームが表示されます。私はhostdataという名前のボリュームを持っていますが、これはdocker runコマンドで指定したときに作成されました。

Listing Docker volumes

docker psを実行すると、実行中のコンテナが表示されます。

Listing running containers

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

Stopping a Docker container

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

Listing Docker volumes

Dockerボリュームの作成

ボリュームを作成する別の方法は、docker volume createコマンドを使用することです。名前を指定しない場合、Dockerは長いランダムな文字列の名前を与えます。それ以外の場合は、ここで名前を指定できます。私はこのボリュームをlogdataと呼ぶことにします。これにより、ボリュームがリストに表示されます。

Creating a new Docker volume

それを新しいコンテナにマウントします。もう一度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つのログファイルがあります。

Two files in C:\logdata

コンテナが実行中のままである間に、再度Ctrl-P-Qを実行してこのコンテナを終了してください。実行中のコンテナがある状態で、同じボリュームをマウントして新しいコンテナを起動してください。

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

新しいコンテナでlogdataフォルダのリストを実行すると、2つのログファイルが共有されていることがわかります。

Two log files being shared with containers

今度は、このコンテナを終了してください。実行中のコンテナが1つあり、終了したコンテナが2つ残っているはずです。

Two containers still running

今度は、すべての実行中のコンテナを停止し、docker rmを実行して終了したコンテナをすべて削除してください。

Removing Docker containers

再度、ボリュームのリストを表示します。ボリュームlogdataは、将来のコンテナにマウントするためにまだ利用可能です。

Volume still available

docker volumeを実行すると、このコマンドの使用方法が表示されます。

Docker volume syntax

Dockerボリュームの検査

すでにcreateを見てきたので、次はinspectに移りましょう。 docker volume inspectlogdataボリュームに対して実行すると、そのボリュームのプロパティが返されます。マウントポイントは、コンテナホスト上のボリュームの物理パスです。

Inspecting Docker volumes

そのフォルダをInvoke-Itemを使用して開いてみましょう。 logdataフォルダの下には、dataというフォルダがあります。 それを開くと、先ほどコンテナから作成されたファイルが表示されます。

Files created earlier

Dockerボリュームの削除

ボリュームを削除するには、docker volume rmを実行し、削除するボリュームの名前を続けて入力します。

> docker volume rm logdata

今、ボリュームをリストアップすると、logdataはもうありません。

Listing Docker volumes

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

Inspecting the prune parameter

このコマンドには注意が必要ですので、警告と確認のプロンプトが表示されます。もしYと入力してエンターキーを押すと、削除されたボリュームが表示されます。

そして、もう一度ボリュームをリストアップすると、すべて削除されていることがわかります。

No Docker volumes exist

まとめ

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

Source:
https://adamtheautomator.com/create-docker-volume/