GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerボリュームとは何ですか?また、それらをどのように使用しますか?

デフォルトでは、Dockerコンテナは完全にステートレスです。コンテナに保存されているデータは一時的なものであり、コンテナがシャットダウンすると消去されます。これは明らかに多くのアプリケーションにとって理想的ではないため、Dockerは状態を処理するいくつかの方法を提供します。

ボリュームとは何ですか?

Dockerデータを永続化する最も簡単な方法は、バインドマウントです。 、これは文字通り、ホストのディスク上の場所をコンテナのディスク上の場所にバインドします。これらは作成と使用が簡単ですが、ディレクトリを設定して自分で管理する必要があるため、少し厄介です。

ボリュームは、Dockerによって管理される仮想ハードドライブのようなものです。 Dockerは、それらをディスク(通常は/var/lib/docker/volumes/)に保存します。 )、ディレクトリパスではなく、覚えやすい単一の名前を付けます。 DockerCLIを使用して簡単に作成および削除できます。

これらには、Dockerによる管理以外にもいくつかの利点があります。 LinuxとWindowsの両方のコンテナで動作し、複数のコンテナ間でより安全に共有できます。ボリュームドライバを使用すると、クラウドプロバイダーは基盤となるデータのリモートホスティングを提供できます。全体として、ボリュームはバインドマウントよりも使いやすく、状態を管理するためにDockerによって推奨されています。

もちろん、Dockerデータをサーバーに保存する必要があるかどうかを検討する必要があります。多くのアプリケーションでは、Amazon S3などの外部リモートデータストアまたは外部データベースを使用するだけで、使用するデータをフロントエンドサーバーに拘束せずに保存できます。

どのように使用しますか?

次のコマンドを使用して、コマンドラインから新しいボリュームを作成できます。

docker volume create nginx-config

次に、Dockerコンテナーを実行するときに、--mountを使用してコンテナー内のターゲットにリンクします。 フラグ:

docker run -d 
--name devtest 
--mount source=nginx-config,target=/etc/nginx 
nginx:latest

docker inspect <name>を実行する場合 、Mountsの下にボリュームが表示されます セクション。

Docker Composeを使用している場合は、セットアップも簡単です。 volumesを追加するだけです 使用している各コンテナサービスのエントリを入力し、ボリューム名をゲスト内の場所にマップします。また、トップレベルのvolumesにボリュームのリストを提供する必要があります 作成してプロビジョニングするためのキー。

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-config:/etc/nginx/
volumes:
  nginx-config:

これにより、このコンポーズのボリュームが自動的に作成されます。 Composeの外部から作成済みのボリュームを使用する場合は、external: trueを指定します。 ボリューム構成の場合:

volumes:
  cms-content:
    external: true

代わりに、ボリュームを気にせずにバインドマウントを実行する場合は、ボリューム名の代わりにパス名を入力し、ボリューム名の定義を省略します。

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - /docker/nginx-config/:/etc/nginx/

ユースケースでこれよりも具体的なものが必要な場合は、Composeでのボリュームの使用に関するDockerの完全なドキュメントを読むことができます。

Dockerボリュームの転送

Dockerボリュームは、自動的に作成され、/var/lib/docker/volumes/に保存される単なるフォルダーです。 、各ボリュームは./volumename/_data/の下に保存されます 。バックアップと復元を行うには、これらのボリュームを直接バックアップするだけです。

代わりにDockerCLIを使用したい場合、残念ながらこれを行う簡単な方法は提供されていません。コンテナのボリュームをバックアップするには、コンテナ名と、データが保存されているマウント場所が必要です。

これを行う方法は少しハックです。新しいDockerコンテナでコマンドを実行し、現在のシェルディレクトリをバインドマウントし、ボリュームをそのコンテナにマウントしてから、tarを実行する必要があります。 ディレクトリをバックアップに入れます。最終的にはbackup.tarになります ボリュームの:

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /mountlocation

次に、同様に、ターゲットディレクトリにアーカイブを抽出できます。

docker run --rm --volumes-from containername -v $(pwd):/backup ubuntu bash -c "cd /mountlocation && tar xvf /backup/backup.tar --strip 1"

ただし、これはホストの場所を知る必要があるよりも優れているため、必要に応じてこれを自動化できます。


Docker
  1. Ubuntu20.04にDockerをインストールして使用する方法

  2. どのような追加のサムナイラーが利用可能であり、それらをインストールする方法は?

  3. CentOSにDockerComposeをインストールして使用する方法

  1. Dockerログ:ログとは何かとその使用方法(例を含む)

  2. リモートDockerホストを使用する方法と理由

  3. SELinux モードとは何か、およびその設定方法

  1. プライベートDockerレジストリを設定して使用する方法

  2. Umaskとは何ですか?その使用方法

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