編集済み 16 数時間前 によって ExtremeHow 編集チーム
ドッカーオーケストレーションスウォームモードコンテナデブオプスクラスタ管理スケーリング設定コマンドラインアプリケーションデプロイメント
翻訳が更新されました 16 数時間前
Docker Swarmは、Dockerノードのクラスターを作成および管理するためのツールです。これは大規模にコンテナを編成する方法を提供し、複数のノードにわたってDockerコンテナをデプロイ、スケール、および管理することができます。これは高可用性と負荷分散が必要なアプリケーションにとって不可欠です。
Docker Swarmを設定する前に、LinuxマシンにDockerをインストールする必要があります。レジリエントなSwarmクラスターを作成するためには、少なくとも3つのノード(1つのマネージャーと2つのワーカー)があることをお勧めします。すべてのノードが同じネットワーク上にあり、互いに通信できることを確認してください。
まず、すべてのマシンにDockerがインストールされていることを確認します。各マシンで次のコマンドを実行することでDockerのバージョンを確認できます。
docker --version
Dockerがインストールされていない場合は、Ubuntu、CentOSなどのディストリビューション用の公式Dockerインストールドキュメントに従うことができます。
Linuxマシンの1つをSwarmマネージャーとして選びます。マネージャーノードはクラスターを管理し、サービスを編成する役割を担います。
マネージャーノードで次のコマンドを使用してスワームクラスターを開始します:
docker swarm init --advertise-addr <MANAGER-IP>
<MANAGER-IP>
をマネージャーノードのIPアドレスに置き換えます。このコマンドを実行した後、DockerはこのSwarmにワーカーノードを参加させるためのコマンドを出力します。このコマンドを必ずメモしておきます。すぐに使用することになります。
各ワーカーノードで、マネージャーノードでの初期化後にDocker Swarmが提供した参加コマンドを実行します。コマンドは次のようになります。
docker swarm join --token SWMTKN-1-xxxxxxxx <MANAGER-IP>:2377
このコマンドには、Swarmセットアップに特有のトークンとマネージャーのIPアドレスが含まれています。このコマンドを各ワーカーノードで実行します。成功すると、ターミナルにはノードがSwarmに参加したことを示す確認メッセージが表示されます。
ワーカーノードが正常にスワームに参加したことを確認するには、マネージャーノードに戻ります。すべてのノードを表示するには、次のコマンドを実行します:
docker node ls
このコマンドを実行すると、マネージャーやワーカーを含むスワーム内のノードのリストが表示されます。出力には各ノードのステータスとその役割が表示されます。
Docker Swarmを設定したので、Swarmにサービスをデプロイできます。Docker Swarmでのサービスは、Swarmでコンテナがどのように実行されるかを定義するタスクです。
次に、シンプルなサービスをデプロイする例を示します:
docker service create --replicas 3 --name hello_world alpine ping docker.com
このコマンドは、"hello_world"という名前のサービスを作成し、Alpine Linuxコンテナの3つのレプリカを、docker.comに対してpingを実行します。Docker Swarmはこれらのレプリカを自動的にノードに分配します。
Swarm内で実行中のすべてのサービスを一覧表示するには、マネージャーノードで次のコマンドを使用します:
docker service ls
特定のサービスに関する詳細情報を取得し、実行中のタスク(またはコンテナ)を含む情報を取得するには次を使用します:
docker service ps <service_name>
たとえば、既にデプロイされた "hello_world" サービスを検査するには次のようにします:
docker service ps hello_world
Docker Swarmの利点の1つは、サービスを容易にスケールできることです。次のようにサービスのレプリカの数を増減できます:
docker service scale hello_world=5
このコマンドは、"hello_world" サービスの実行中のレプリカの数を5に増やします。Docker Swarmはこれらの追加レプリカの配置を管理し、適切な負荷分散を確保します。
実行中のサービスの設定を停止することなく更新できます。たとえば、サービスで使用されるイメージのバージョンを変更できます。
docker service update --image alpine:latest hello_world
これにより、"hello_world" サービスが最新のAlpineイメージを使用するように更新されます。Docker Swarmはローリングアップデートを実行し、停止せずに古いタスクを新しいタスクに置き換えます。
サービスが不要になった場合、次のコマンドを実行して削除します:
docker service rm hello_world
このコマンドは、スワームから指定されたサービスを削除し、関連するすべてのレプリカを停止します。
ワーカーノードをスワームから削除することにした場合、ワーカーノードで次のコマンドを実行してスワームを離れます:
docker swarm leave
マネージャーノードを削除したい場合や再起動したい場合は、次を使用します:
docker swarm leave --force
Linux上でDocker Swarmを設定することで、複数のノードにわたってコンテナを効率的に管理およびスケールできます。このガイドは、Docker Swarmの開始、ノードの追加、サービスのデプロイ、サービスのスケール、サービスの更新、最終的にノードとサービスの削除に至るまでの手順を説明しています。
Docker Swarmを実装することで、高可用性、負荷分散、簡素化されたコンテナ管理を提供する大きな一歩を踏み出すことができます。ネットワーク構成や安全なノード通信など、Docker Swarmの機能をさらに探索できます。
この知識は、高度なデプロイメントを構築し、CI/CDパイプラインと統合して開発プロセスとデリバリープロセスを自動化するための確固たる基盤となります。
記事の内容に誤りがある場合, あなたは