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

20現代の開発者にとって便利なDockerボリュームコマンドの例

Dockerは、2013年の登場以来、プログラムのパッケージ化方法を変更しました。これにより、開発者は最小限の依存関係で最先端のソフトウェアを構築でき、これまでになく簡単にデプロイできます。 Dockerプラットフォームの習得を目指す意欲的なソフトウェアエンジニアの場合は、さまざまなDockerボリュームコマンドを十分に理解している必要があります。ボリュームは、永続的なデータストレージを提供するためにDockerによって使用されるメカニズムです。これらは、ソフトウェアの開発と展開に関して大きなメリットをもたらします。本日は、Dockerのデータボリュームの基本的な構成要素について説明しました。

必須のDockerボリュームコマンドの例

このガイドでは、商用およびオープンソースプロジェクトで永続データストレージを実装するために開発者が使用している現在の方法論について説明します。このガイドを完了すると、独自のデータボリュームを作成し、Dockerコンテナから簡単にアクセスできるようになります。まったくの初心者の場合は、ボリュームを操作する前に、重要なDockerコマンドに関するガイドを確認することをお勧めします。

1。 Dockerボリュームの作成

Dockerでデータボリュームを作成するのは非常に簡単です。これを行うには、dockerデーモンのvolumecreateコマンドを使用する必要があります。以下の例をざっと見て、これがどのように機能するかを確認してください。

$ docker volume create testVolume

このコマンドは、データボリューム名 testVolumeを作成します 特定のコンテナーで使用することも、コンテナーのクラスター間で共有することもできます。これで、このボリュームをコンテナ内の場所にマウントできます。完了すると、ホストマシンからコンテナデータを保存またはアクセスするのが非常に簡単になります。

2。利用可能なボリュームの表示

開発環境には、多数のデータボリュームがあるのが一般的です。したがって、使用している特定のボリュームを特定することが重要です。幸い、dockerデーモンのvolume lsサブコマンドを使用すると、現在宣言されているすべてのデータボリュームを簡単に一覧表示できます。

$ docker volume ls
---

上記のコマンドを実行すると、ホストに存在するすべてのDockerボリュームのリストが表示されます。データボリュームの名前とそれぞれのボリュームドライバを出力します。データボリュームは、ホストファイルシステムの特定の部分、つまり / var / lib / docker / bytes /に保存されます。 Linuxの場合。

3。 Dockerボリュームの検査

dockerデーモンのvolumeinspectsコマンドは、特定のボリュームに関する重要な情報を提供します。ボリュームドライバ、マウントポイント、スコープ、ラベルなどの情報が表示されます。以下のコマンドは、実際の例を使用してこれを示しています。

$ docker volume inspect testVolume

結果のデータは、 testVolume / var / lib / docker / bytes / testVolume / _dataの場所にマウントされます 私たちのホストマシンの。また、この情報の作成日と指定されたオプションも表示されます。これにより、開発者はデータ量のトラブルシューティングをはるかに簡単に行うことができます。

4。特定のボリュームの削除

未使用のデータボリュームが蓄積されている場合は、それらを削除することをお勧めします。このようにして、ホスト環境のストレージスペースを解放できます。次の例は、name属性を使用して単一のボリュームを削除する方法を示しています。

$ docker volume rm testVolume

したがって、volume rmサブコマンドに続けてボリューム名を使用すると、特定のデータボリュームを削除できます。確認として、Linuxターミナルエミュレータで削除されたボリュームの名前が返されます。

5。複数のボリュームを削除する

複数のデータボリュームを削除することも非常に簡単です。削除するボリュームの名前を次々に渡すだけです。以下のコマンドは、これが実際に動作していることを示しています。

$ docker volume rm testVolume newVolume otherVolume

このコマンドは、指定された3つのデータボリュームを削除します。 newVolumeは作成していないことに注意してください およびotherVolume 。ここでは、デモンストレーション目的でのみ使用されています。したがって、データボリュームを削除する前に、まずデータボリュームが存在することを確認してください。

6。すべてのボリュームを削除する

コンテナが開発マシンから本番環境に移動されたら、データボリュームを削除することをお勧めします。幸い、dockerデーモンを使用すると、開発者は、以下に示すように、1つのコマンドを使用して使用可能なすべてのdockerボリュームを削除できます。

$ docker volume prune

さらに、このdocker volumeコマンドは適切です。つまり、既存のコンテナーで使用されているボリュームは削除されません。したがって、使用するのは非常に安全であり、開発環境で非常に必要なスペースを解放するのに役立ちます。

7。データボリュームを使用したコンテナの作成

これまで、いくつかの基本的なボリューム操作のみを示してきました。ただし、実際のほとんどのシナリオでは、データボリュームをDockerコンテナにマウントする必要があります。次のdockerコマンドは、dockerコンテナーを作成し、このコンテナーにデータボリュームをマウントする方法を示しています。

$ docker run -d -it --name test-container -v "testVolume":/tmp ubuntu:xenial
$ docker run -d -it --name test-container --volume "testVolume":/tmp ubuntu:xenial

このコマンドは、ubuntu:xenialイメージを使用してtest-containerという名前のコンテナーを作成し、データボリュームを / tmpにマウントします。 このコンテナの場所。以下のコマンドを実行し、出力の「マウント」セクションを確認すると、詳細情報を見つけることができます。

$ docker inspect test-container

8。コンテナへのデータボリュームのマウント

–マウント Dockerのオプションは、既存のデータボリュームをコンテナファイルシステムの特定の部分にアドレス指定するために使用できます。結果は上記のコマンドと完全に似ていますが、多くのLinux開発者にとってより直感的です。

$ docker run -d -it --name test-container --mount source=testVolume,target=/tmp ubuntu:xenial

–マウント オプションは、コンマで区切られたタプルのセットです。これらは= データボリュームの属性を示すペア。

9。 Dockerでのバインドマウントの作成

バインドマウントは、Dockerの初期の頃から利用可能であった永続化メカニズムです。 Dockerボリュームと比較して機能がいくらか制限されていますが、特定の場合に適しています。ボリュームとは異なり、バインドマウントは基盤となるホストファイルシステムに依存します。

$ docker run -d -it --name test-container --mount type=bind,source=$(pwd),target=/tmp ubuntu:xenial

上記のコマンドは、Linuxファイルシステムの現在の作業ディレクトリを / tmpにマップするバインドマウントを作成します。 コンテナの場所。 type =bind タプルは、これがボリュームではなくバインドマウントであることを示します。

10。データ量の事前入力

開発者は、Dockerコンテナーを作成するときに、データボリュームを事前に入力する必要がある場合があります。ただし、この手法は、コンテナのターゲット宛先がボリュームの作成前にデータを保持している場合にのみ適用されます。

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html nginx:latest

このコマンドは、最初にボリュームnginxVolを作成し、それに / usr / share / nginx / htmlのコンテンツを入力します。 コンテナのファイルシステムの場所。これで、このデータは、nginxVolボリュームを共有する他のすべてのコンテナーからアクセスできるようになります。以下に示すように、代わりにマウント構文を使用できます。

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html nginx:latest

11。読み取り専用ボリュームの使用

デフォルトでは、すべてのコンテナは、それぞれのデータボリュームへの読み取りアクセスと書き込みアクセスの両方を持っています。ただし、すべてのコンテナーがボリュームにデータを書き込む必要があるわけではありません。多くの場合、単にデータを読み取るだけで十分です。このような場合、コンテナに読み取り専用アクセスを割り当てることができます。 docker volumeコマンドをチェックして、これがどのように機能するかを確認してください。

$ docker run -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html:ro nginx:latest

したがって、「:ro」を追加するだけです。 宛先の後の‘フィールドは、nginxContainerがnginxVolにデータを書き込むことを禁止します。 「読み取り専用」を使用する必要があります –mountオプションを使用してボリュームを作成する場合は、‘オプション。構文の違いに注意してください。

$ docker run -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html,readonly nginx:latest

12。ドライバーを使用したボリュームの作成

ボリュームドライバーは、リモートマウント、データ暗号化、およびその他の機能へのアクセスを提供するためにDockerによって使用される柔軟なメカニズムです。以下のコマンドは、特定のボリュームドライバーを使用してDockerコンテナーを作成する方法をユーザーに示しています。

$ docker volume create --driver vieux/sshfs -o [email protected]:/home/session -o password=testPassword  sshVolume

このコマンドは、vieux/sshfsドライバーを使用してDockerデータボリュームを作成します。このドライバを使用すると、開発者はSSHFSテクノロジを使用してリモートディレクトリを接続できます。

13。ドライバーを使用してボリュームを作成するコンテナーの実行

次のコマンドを使用して、データボリュームの作成にボリュームドライバーを使用するコンテナーを作成および開始できます。この例は、上記の例に基づいています。

$ docker run -d --name sshfsContainer --volume-driver vieux/sshfs --mount src=sshVolume,target=/tmp,[email protected]:/home/session,volume-opt=password=testPassword nginx:latest

volume-optタプルはオプションを渡します。すべてのユースケースに必要なわけではありません。ただし、volume-optを指定する場合は、 –mountを使用する必要があります -vの代わりにフラグ または–ボリューム。

14。 NFSボリュームを使用するサービスの作成

NFSまたはネットワークファイルシステムは、ローカルファイルシステムの一部であるかのようにリモートファイルシステムを使用できるようにする分散ファイル共有システムです。次のコマンドは、NFSボリュームを使用するサービスを作成する方法を示しています。

$ docker service create -d --name nfs-service --mount 'type=volume,source=nfsVolume,target=/tmp,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o=addr=10.0.0.10' nginx:latest

このコマンドは、NGSサーバーが10.0.0.10で実行されていることを前提としており、 / var / docker-nfsを公開します。 ディレクトリ。また、NFSv3を使用します。したがって、NFSv4でこれを使用する前に、いくつかの調整を行う必要があります。

15。コンテナのバックアップ

ボリュームは、開発者が重要なコンテナデータをバックアップするための柔軟な方法を提供します。説明のために、最初にtest-containerという名前の新しいコンテナを作成します。

$ docker run -v /data --name test-container ubuntu:xenial /bin/bash

したがって、test-containerには/dataと呼ばれるボリュームがあります。 次に、別のコンテナを起動して、 / dataをマウントします。 テストコンテナからのボリューム。次に、ファイルシステムのローカルディレクトリを / backupとしてマウントします。 次に、 / dataの内容を保存します / backup backup.tarとしてのディレクトリ。

$ docker run --rm --volumes-from test-container -v $(pwd):/backup ubuntu:xenial tar cvf /backup/backup.tar /data

–ボリューム-から オプションは、テストコンテナのデータボリュームを新しいコンテナに実際にマウントしていることを示します。

16。コンテナバックアップの復元

バックアップファイルからコンテナを復元することも非常に簡単です。同じコンテナまたは特定のコンテナにデータを復元できます。前の例で作成したbackup.tarファイルの内容を別のコンテナに復元する方法をここで説明します。

$ docker run -v /data --name test-container2 ubuntu /bin/bash

このコマンドは、 / dataを使用して別の新しいコンテナを作成します 音量。次に、この新しいデータボリュームのbackup.tarファイルの内容を抽出します。

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

これらのシンプルでありながら柔軟なDockerボリュームコマンドを使用して、バックアップと復元を簡単に自動化できます。

17。匿名ボリュームの削除

以前、通常の名前付きボリュームを削除する方法を見てきました。ただし、Dockerには匿名ボリュームと呼ばれる別のタイプのデータボリュームもあります。以下のコマンドをざっと見て、名前付きボリュームと匿名ボリュームの間で削除操作がどのように異なるかを確認してください。

$ docker run --rm -v /anon -v whats-in-a-name:/tmp busybox top

上記のコマンドは、 / anonという匿名のボリュームを作成します whats-in-a-nameという名前のボリューム 。これで、Dockerは終了時にこのコンテナーを自動的に削除します。ただし、削除されるのは / anonのみです。 whats-in-a-nameボリュームではなく、ボリューム。 dockervolumeコマンドrmを使用して削除する必要があります。

18。マウント伝搬の指定

マウントの伝播は、元のマウントとそのレプリカの間の制御の流れを示します。デフォルトでは、バインドマウントとボリュームの両方がプライベートを使用します 設定。これにより、元のマウントとそのレプリカ間の伝播が抑制されます。バインドマウントのbind-propagationタプルを使用して、この設定をオーバーライドできます。

$ docker run -d -it --name test-container --mount type=bind,source="$(pwd)"/test,target=/tmp --mount type=bind,source="$(pwd)"/test,target=/temp,readonly,bind-propagation=shared nginx:latest

このコマンドは、 / testをマウントします ディレクトリをコンテナに2回入れます。さらに、 / tmpへの新しい追加 マウントは/ tempに反映されます マウント。ただし、ボリュームを使用する場合は、伝播設定を上書きすることはできません。 Linuxホストでバインドマウントを使用する場合にのみ機能します。

19。ボリュームコマンドマニュアルの表示

以下のコマンドを使用すると、ボリュームコマンドの基本的な使用法を簡単に確認できます。

$ man docker volume

ただし、詳細な説明はありません。そのため、ボリュームとバインドマウントに関するDockerの公式ドキュメントを参照することをお勧めします。

20。サブコマンドのヘルプページを表示する

次のコマンドを使用して、Dockerボリュームで使用できる主なオプションを表示します。

$ docker volume --help

次の構文を使用して、特定のオプションに関する詳細情報を表示することもできます。

$ docker volume COMMAND --help
$ docker volume ls --help

終わりの考え

Dockerボリュームは、最新のアプリケーションに非常に必要な機能を提供します。開発者は、ストレージの問題を排除することで、堅牢で最先端のアプリやサービスを作成できます。さらに、docker volumeコマンドを使用すると、コンテナーデータのバックアップを簡単に作成および維持できます。データ量をより簡単に習得できるように、この慎重に考えられたガイドを用意しました。最初に基本的なコマンドから始めてから、徐々に複雑な実際のシナリオに進むことを強くお勧めします。うまくいけば、私たちはあなたがこのガイドで探していた情報をあなたに提供しました。ご不明な点がございましたら、コメントをお寄せください。


Linux
  1. Linux初心者向けの16の便利な「cp」コマンドの例

  2. Linuxでのlsコマンド:17の便利な例の説明

  3. Dockerpsコマンドの便利な例

  1. Linuxでの12の便利なWgetコマンドの例

  2. 初心者向けのDNFコマンドの例

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

  1. 開発者向けの10の実用的なGrepコマンドの例

  2. Linux での lvremove コマンドの例

  3. Linux での lvdisplay コマンドの例