はじめに
Dockerボリュームは広く使用されており、コンテナーでの作業中にデータの永続性を確保するための便利なツールです。これらは、Dockerイメージのサイズを大きくする追加の書き込み可能なレイヤーをコンパイルするよりも優れた代替手段です。
このチュートリアルでは、Dockerボリュームの使用方法と実際の例を学びます。
Dockerボリュームとは何ですか?
Dockerボリュームは、実行中のコンテナーによって生成されたデータを保持するためにDockerコンテナーにマウントされたファイルシステムです。
ボリュームは、コンテナーのライフサイクルに関係なく、ホストに保存されます。これにより、ユーザーはデータをバックアップし、コンテナ間でファイルシステムを簡単に共有できます。
Dockerボリューム入門
コンテナの起動中にDockerボリュームをマウントする方法はいくつかあります。ユーザーは-v
のどちらかを決めることができます および--mount
docker run
に追加されるフラグ コマンド。
この記事では、使用中の両方のフラグの例を示します。
Dockerボリュームを作成する方法
Dockerボリュームを作成するには、次のコマンドを使用します:
docker volume create [volume_name]
Dockerは、ホスト上の / var / lib / docker / volume /の下にボリュームのディレクトリを自動的に作成します 道。これで、このボリュームをコンテナーにマウントして、データの永続性と複数のコンテナー間でのデータ共有を確保できます。
たとえば、 dataという名前でボリュームを作成するには 、次のコマンドを実行します:
docker volume create data
Dockerボリュームの一覧表示
Dockerボリュームが正常に作成されたことを確認するには、Dockerに次のコマンドで使用可能なすべてのボリュームを一覧表示するように求めます。
docker volume list
出力には、ボリュームのリストが表示され、ボリュームの場所が指定されます(ドライバー )とそのボリューム名 。下の画像では、ボリュームのデータを確認できます。 前のセクションで作成しました。
Dockerボリュームの検査
Dockerボリュームの詳細を確認するには、 inspect
を使用してください コマンド:
docker volume inspect [volume_name]
ホストファイル(マウントポイント)上の場所など、ボリュームの詳細が一覧表示されます。 )。データボリューム内に保存されているものはすべて、マウントポイントパスの下にリストされているディレクトリにもあります。
データボリュームのマウント
データボリュームをコンテナにマウントするには、 --mount
を追加します docker run
へのフラグ 指図。指定されたコンテナにボリュームを追加し、仮想環境内で生成されたデータを保存します。
コンテナを実行してデータボリュームをマウントするには、基本的な構文に従います。
docker run --mount source=[volume_name],destination=[path_in_container] [docker_image]
[path_in_container]
を置き換えます コンテナ内のデータボリュームを配置するパスを指定します。そのディレクトリに保存されているものはすべて、ホストのデータボリュームにも自動的に保存されます。
たとえば、Ubuntuコンテナを起動し、データをマウントするには ボリュームをそれに合わせて、実行します:
docker run -it --name=example1 --mount source=data,destination=/data ubuntu
このコマンドは、コンテナをインタラクティブモードで実行するようにDockerに指示します( -it
) example1
という名前のUbuntuイメージから 、ボリュームデータを /data
にマウントしている間 コンテナ内のディレクトリ。
次に、コンテナの内容を一覧表示して、ボリュームが正常にマウントされたことを確認します。
ls
コンテナの起動中に定義された名前でDockerボリュームを見つけます。この例では、データ 。
共有ボリュームからコンテナ間でファイルをコピーする
Dockerボリュームを使用してコンテナ間でファイルを共有する方法を見てみましょう。
そのためには、前のセクションで作成したボリュームとコンテナを使用します。これには、コマンドの実行が含まれます:
docker volume create data
-
docker run -it --name=example1 --mount source=data,destination=/data ubuntu
1.コンテナコマンドプロンプトに切り替えたら、データボリュームディレクトリに移動します。
cd data
2.touchコマンドを使用して空のサンプルファイルを作成します:
touch sample1.txt
3.ここで、コンテナを終了します:
exit
4.次に、新しいコンテナ example2を起動します 同じデータ量で:
docker run -it --name=example2 --mount source=data,destination=/data ubuntu
5.コンテナの内容を一覧表示します。 example1 のように、データディレクトリが見つかります。 :
ls
6.データディレクトリに移動し、その内容を一覧表示します。
cd data
ls
出力には、 sample1.txtがリストされている必要があります 前のコンテナで作成したファイル( example1 。
データボリュームとしてのホストディレクトリのマウント
ホストマシンからコンテナに既存のディレクトリをマウントすることもできます。このタイプのボリュームは、ホストボリュームと呼ばれます。 。
-v
を使用してホストボリュームをマウントできます フラグを立てて、ホストディレクトリの名前を指定します。
これで、ホストディレクトリ内のすべてがコンテナで利用できるようになります。さらに、コンテナ内で生成され、データボリュームに配置されたすべてのデータは、ホストディレクトリに安全に保存されます。
ホストディレクトリをマウントするための基本的な構文は次のとおりです。
docker run -v "$(pwd)":[volume_name] [docker_image]
"$(pwd)"
属性は、ユーザーが現在いるディレクトリをマウントするようにDockerに指示します。
次の例は、これがどのように行われるかを示しています。
1.まず、ホスト上に tmpという名前でサンプルディレクトリを作成します そこに移動します:
mkdir tmp
cd tmp
2.ディレクトリ内に移動したら、テストファイルを作成して、コンテナから利用できるかどうかを確認します。
touch file.txt
2.次に、 docker run
を使用します ホストディレクトリが接続されたUbuntuコンテナを起動するコマンド:
docker run -it -v "$(pwd)":/data1 ubuntu
これにより、コンテナがインタラクティブモードで起動され、 data1という名前でボリュームがマウントされます。 。
3.コンテナのコンテンツを一覧表示し、 data1があることを確認します ディレクトリ:
ls
4.マウントされたディレクトリを開き、コンテンツを一覧表示します。出力には、ホストで作成したファイルが表示されます。
cd data1
ls
ボリュームの許可と所有権
Dockerfile内で所有権を構成することにより、ボリュームのアクセス許可を変更できます。
RUN
を使用します 命令とchown
Dockerボリューム権限を設定するコマンド。この命令がVOLUME
を定義する行の前にあることを確認してください 。
または、ホストボリュームとして使用されるディレクトリの所有権を変更することもできます。
chown
の使用方法については コマンドについては、Linuxファイルパーミッションチュートリアル:パーミッションを確認および変更する方法を参照してください。
Dockerボリュームを削除する方法
Dockerボリュームを削除するには、その名前を指定する必要があります。
コマンドラインでDockerボリュームを削除するための基本的な構文は次のとおりです。
docker volume rm [volume_name]
Dockerは、現在使用されていない場合にのみボリュームを削除します。指定されたボリュームのコンテナがある場合、エラーで応答します。続行するには、コンテナを停止して削除してから、 docker volume rm
を再実行します コマンド。
すべてのボリュームを一度に削除する方法
1つのコマンドで未使用のDockerボリュームをすべて削除するには:
docker volume prune
出力は、少なくとも1つのコンテナで使用されていないすべてのローカルボリュームを削除することを警告します。 yを押します 続行します。