docker node demote コマンドを使って Swarm マネージャーを降格する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Docker Swarm 内のノードの役割を管理する方法を探ります。具体的には、docker node demote コマンドを使用して、マネージャーノードの役割をワーカーに変更することに焦点を当てます。

この実験では、Docker Swarm の初期化、現在のマネージャーノードの特定、降格コマンドの実行、最後にノードの更新された役割を検証して降格の成功を確認するというプロセスを案内します。この実践的な経験を通じて、Docker Swarm のノード管理に関する実用的な知識を得ることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/ls -.-> lab-555180{{"docker node demote コマンドを使って Swarm マネージャーを降格する方法"}} docker/ps -.-> lab-555180{{"docker node demote コマンドを使って Swarm マネージャーを降格する方法"}} docker/exec -.-> lab-555180{{"docker node demote コマンドを使って Swarm マネージャーを降格する方法"}} docker/version -.-> lab-555180{{"docker node demote コマンドを使って Swarm マネージャーを降格する方法"}} end

Docker Swarm の初期化

このステップでは、Docker Swarm を初期化します。Docker Swarm は、Docker を実行しているマシンのグループで、クラスタに参加しています。Swarm に参加した後も、普段使っている Docker コマンドを引き続き実行できますが、これらは現在、Swarm マネージャーによって実行されます。Swarm 内のマシンは、マネージャーまたはワーカーのいずれかになります。マネージャーはクラスタ管理タスクを処理し、ワーカーはサービスを実行します。

Swarm を初期化する前に、現在の Docker バージョンを確認しましょう。

docker version

LabEx VM にインストールされている Docker バージョンを示す、以下のような出力が表示されるはずです。

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.16.20
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:18 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.20
  Git commit:       363bd3c
  Built:            Tue Oct 25 17:59:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b4bd5d2b3d85c5e9b15588d67616e19a2a3a495d
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

では、このマシンで Docker Swarm を初期化しましょう。これは Swarm 内の最初のノードであるため、自動的にマネージャーノードになります。docker swarm init コマンドを使用します。

docker swarm init

Swarm が初期化され、他のノードをワーカーとして参加させるためのコマンドが表示される出力が表示されるはずです。出力は以下のようになります。

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

この出力により、Swarm が初期化され、現在のノードがマネージャーであることが確認されます。xxxxxxxxxxxx は実際のノード ID に置き換えられます。

マネージャーを特定するために Swarm ノードを一覧表示する

このステップでは、Docker Swarm 内のノードを一覧表示して、どのノードがマネージャーで、どのノードがワーカーであるかを特定します。単一のノードで Swarm を初期化したばかりなので、リストには 1 つのノードのみが表示され、その役割は「マネージャー」であることが期待されます。

Swarm 内のノードを一覧表示するには、docker node ls コマンドを使用します。

docker node ls

以下のような出力が表示されるはずです。

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx *                labex-vm            Ready     Active         Leader           20.10.21

出力を分解して説明しましょう。

  • ID: ノードの一意の ID。ID の横にあるアスタリスク (*) は、コマンドを実行している現在のノードを示します。
  • HOSTNAME: ノードのホスト名。この場合は labex-vm です。
  • STATUS: ノードの状態。Ready は、ノードが健全でタスクを受け入れる準備ができていることを意味します。
  • AVAILABILITY: ノードがタスクをスケジュールできるかどうかを示します。Active は利用可能であることを意味します。
  • MANAGER STATUS: ノードの Swarm 内での役割を示します。Leader は、このノードが Swarm 内の主要なマネージャーであることを示します。他にマネージャーがある場合、Reachable と表示されます。ワーカーノードの場合は、このフィールドは空白になります。
  • ENGINE VERSION: ノードで実行されている Docker Engine のバージョン。

予想通り、1 つのノードがリストされ、その MANAGER STATUSLeader であり、これがマネージャーノードであることが確認されます。

マネージャーノードを降格する

このステップでは、現在のマネージャーノードをワーカーノードに降格します。マネージャーノードを降格するとは、その役割を Swarm の管理から、単にワーカーとしてタスクを実行するものに変更することを意味します。これは、マネージャーの数を減らす必要がある場合や、特定のノードの役割を変更する場合などに役立ちます。

マネージャーノードを降格するには、docker node demote コマンドの後にノード ID またはホスト名を指定します。前のステップで、ホスト名が labex-vm であることを知っています。

docker node demote labex-vm

降格が確認される出力が表示されるはずです。

Node labex-vm was demoted from a manager to a worker.

この出力は、ノード labex-vm が Swarm 内でマネージャーからワーカーの役割に正常に降格されたことを示しています。

降格後のノードの役割を確認する

この最後のステップでは、降格操作の後にノードの役割がマネージャーからワーカーに正常に変更されたことを確認します。再度 docker node ls コマンドを使用して、Swarm 内のノードを一覧表示し、対象のノードの MANAGER STATUS 列を確認します。

docker node ls

コマンドを実行した後、以下のような出力が表示されるはずです。

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxxxxxxxxxxx                  labex-vm            Ready     Active                          20.10.21

labex-vm ノードの MANAGER STATUS 列が現在空白になっていることに注意してください。これは、このノードがもはやマネージャーではなく、Swarm 内でワーカーノードとして動作していることを示しています。アスタリスク (*) は依然として ID の横にありますが、これはコマンドを実行しているノードであるためであり、その役割は変更されています。

これにより、降格が成功したことが確認されます。

まとめ

この実験では、Swarm を初期化してマネージャーノードを特定することで、Docker Swarm ノードを管理する方法を学びました。次に、docker node demote コマンドを使用して、マネージャーノードの役割をワーカーに変更する練習を行いました。最後に、Swarm ノードを一覧表示して更新された役割を確認することで、降格が成功したことを検証しました。