はじめに
この実験では、docker volume update コマンドを使用して Docker クラスターボリュームの可用性を管理する方法を学びます。まず、Docker Swarm 内のノード間でデータを共有するために不可欠なクラスターボリュームを作成します。
作成後、ボリュームの可用性状態を変更する方法を調べます。これには、新しいタスクがボリュームを使用できないようにする pause への可用性の更新、およびボリュームが利用できないノードからタスクを移動させることを目的とした drain への更新が含まれます。最後に、可用性を active に戻して、新しいタスクと既存のタスクがボリュームを完全に利用できるようにする方法を学びます。この実験では、Swarm 環境内でクラスターボリュームにアクセスして使用する方法を制御する実践的な経験を得ることができます。
クラスターボリュームを作成する
このステップでは、Docker でクラスターボリュームを作成する方法を学びます。クラスターボリュームとは、Docker Swarm 内の異なるノードにある複数のコンテナからアクセスできるボリュームです。これは、データベースやファイルサーバーなど、データを共有する必要があるアプリケーションに役立ちます。
クラスターボリュームを作成する前に、Docker Swarm が初期化されていることを確認する必要があります。まだ Swarm を初期化していない場合は、次のコマンドを使用して初期化できます。
docker swarm init
Swarm が初期化されたことを示す出力が表示されるはずです。
では、クラスターボリュームを作成しましょう。--driver local フラグを使用して docker volume create コマンドを実行し、ボリューム名を指定します。local ドライバーはデフォルトのドライバーで、単一ノード上にボリュームを作成するのに適しています。クラスターボリュームの場合、Docker Swarm がノード間での配布とアクセスを処理します。
docker volume create my-cluster-volume
コマンドを実行した後、作成されたボリュームの名前がコンソールに表示されるはずです。
my-cluster-volume
ボリュームが作成されたことを確認するには、docker volume ls コマンドを使用して既存のボリュームを一覧表示できます。
docker volume ls
出力に my-cluster-volume が表示されるはずです。
クラスターボリュームの可用性を pause に更新する
このステップでは、クラスターボリュームの可用性を pause に更新する方法を学びます。ボリュームの可用性が pause に設定されると、このボリュームを必要とする新しいタスクは、ボリュームが利用できないノードにスケジュールされません。ボリュームを使用している既存のタスクは引き続き実行されます。この状態は、現在実行中のサービスを中断することなく、ボリュームの新しい使用を一時的に防止するのに役立ちます。
前のステップで作成した my-cluster-volume の可用性を変更するために、docker volume update コマンドを使用します。--availability フラグを使用して、目的の可用性状態を指定します。
docker volume update --availability pause my-cluster-volume
コマンドを実行した後、更新が確認される出力が表示されるはずです。
my-cluster-volume
ボリュームの可用性が pause に更新されたことを確認するには、docker volume inspect コマンドを使用してボリュームを調べ、Availability フィールドを探します。
docker volume inspect my-cluster-volume
inspect コマンドの出力で、Spec セクション内の Availability フィールドを探します。pause と表示されるはずです。
[
{
"CreatedAt": "...",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-cluster-volume/_data",
"Name": "my-cluster-volume",
"Options": null,
"Scope": "local",
"Spec": {
"Availability": "pause"
},
"Status": {}
}
]
クラスターボリュームの可用性を drain に更新する
このステップでは、クラスターボリュームの可用性を drain に更新する方法を学びます。ボリュームの可用性が drain に設定されると、このボリュームを必要とする新しいタスクは、ボリュームが利用できないノードにスケジュールされません。さらに、Docker Swarm はボリュームを使用している既存のタスクをシャットダウンし、ボリュームが利用可能なノードに再スケジュールしようとします。この状態は、メンテナンスを行う前やボリュームを削除する前に、サービスをボリュームから円滑に移行するのに役立ちます。
再び docker volume update コマンドを使用しますが、今回は --availability フラグを drain に設定します。
docker volume update --availability drain my-cluster-volume
確認としてボリューム名が表示されるはずです。
my-cluster-volume
ボリュームの可用性が drain に更新されたことを確認するために、docker volume inspect を使用してボリュームを調べ、Availability フィールドを確認します。
docker volume inspect my-cluster-volume
出力で、Spec セクション内の Availability フィールドが現在 drain になっていることを確認します。
[
{
"CreatedAt": "...",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-cluster-volume/_data",
"Name": "my-cluster-volume",
"Options": null,
"Scope": "local",
"Spec": {
"Availability": "drain"
},
"Status": {}
}
]
クラスターボリュームの可用性をアクティブに更新する
この最後のステップでは、クラスターボリュームの可用性を active に戻す方法を学びます。ボリュームの可用性が active に設定されると、このボリュームを必要とする新しいタスクは、ボリュームが利用可能な任意のノードにスケジュールできます。これはボリュームのデフォルトの状態であり、サービスが使用できる状態を示します。
最後に一度だけ docker volume update コマンドを使用し、--availability フラグを active に設定します。
docker volume update --availability active my-cluster-volume
確認としてボリューム名が表示されるはずです。
my-cluster-volume
ボリュームの可用性が正常に active に戻されたことを確認するために、docker volume inspect を使用してボリュームを調べ、Availability フィールドを確認します。
docker volume inspect my-cluster-volume
出力で、Spec セクション内の Availability フィールドが現在 active になっていることを確認します。
[
{
"CreatedAt": "...",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-cluster-volume/_data",
"Name": "my-cluster-volume",
"Options": null,
"Scope": "local",
"Spec": {
"Availability": "active"
},
"Status": {}
}
]
これで、クラスターボリュームを正常に作成し、その可用性を pause、drain、active の状態間で更新する練習を行いました。
まとめ
この実験では、docker volume update コマンドを使用して Docker クラスターボリュームの可用性を管理する方法を学びました。最初に docker volume create を使用してクラスターボリュームを作成しました。
その後、ボリュームの可用性状態を変更する方法を調べました。新しいタスクがボリュームを使用するのを防ぎ、既存のタスクは継続できるようにする pause 状態に可用性を設定する方法を学びました。次に、ボリュームを使用しているタスクを停止し、他の場所に再スケジュールしようとする drain 状態に可用性を変更する方法を見ました。最後に、新しいタスクがボリュームを利用できるように、可用性を active に戻す方法を学びました。これらの手順は、Docker Swarm 環境内でクラスターボリュームへのアクセスを管理する柔軟性を示しています。



