GNU/Linux >> Linux の 問題 >  >> Ubuntu

Dockerボリューム:作成して開始する方法

はじめに

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を押します 続行します。


Ubuntu
  1. 翻訳を始める方法は?

  2. Lvmパーティション/物理ボリューム>2tbを作成する方法は?

  3. 開始したばかりのプロセスのpidを取得する方法

  1. じゅじゅを始めるには?

  2. Dockerボリュームを理解する

  3. Docker でコンテナに関する情報を取得する方法

  1. Dockerイメージ、コンテナー、ネットワーク、ボリュームを削除する方法

  2. Dockerfileを使用してDockerイメージを作成する方法

  3. NFS Dockerボリューム:作成および使用方法