Docker SwarmはDockerが提供するオーケストレーションツールの1つで、複数のDockerホストをクラスタ化し、1つの仮想的なDockerホストとして扱うことができるしくみです。これにより、コンテナのデプロイ、スケール、管理が容易になります。
Docker Swarmの主な特徴
1. クラスタ管理
Docker Swarmでは複数のホストを一つのクラスタとして管理します。クラスタ内のノードには下記の役割があります。
- マネージャーノード: クラスタ全体の状態を管理し、サービスやタスクのスケジューリングを行います。
- ワーカーノード: 実際にタスクを実行します。
2. 簡単なセットアップ
Docker Engineに統合されているため、Docker CLIを使って簡単にSwarmモードを有効化し、ノードを追加できます。
3. サービスのオーケストレーション
- アプリケーションを“サービス”として定義し、スケールアウトを容易に実現できます。
- Swarmが自動的に負荷分散を行います。
4. セキュリティ
- 通信はデフォルトでTLSで暗号化されています。
- クラスタ内のノード認証やアクセス制御もサポートされています。
5. 分散型設計
- クラスタ全体の状態がすべてのマネージャーノードに分散され、障害に強い設計です。
6. 自己修復機能
- ノードやタスクに障害が発生しても、自動的に復旧を試みます。
主なDocker Swarmコマンド
Swarmモードの初期化
docker swarm init
ワーカーノードの追加
docker swarm join --token [TOKEN] [MANAGER_IP]:2377
サービスの作成
docker service create --name [SERVICE_NAME] [IMAGE_NAME]
ノードの確認
docker node ls
サービスのスケール
docker service scale [SERVICE_NAME]=[REPLICAS]
Docker Swarmの使用用途
- マイクロサービスアーキテクチャのデプロイと運用
- 開発環境やステージング環境の軽量なオーケストレーション
- Kubernetesほど複雑なオーケストレーションが不要な場合
Docker Swarmの注意点
Docker SwarmはKubernetesに比べて機能が簡易なため、大規模な環境ではKubernetesが選ばれることが多いですが、小規模〜中規模のプロジェクトには適しています。