Docker Swarm クラスタの構成と管理方法

DockerBeginner
オンラインで実践に進む

はじめに

Docker Swarm は、開発者が複数の Docker ホストを統合されたスケーラブルなインフラストラクチャに変換することを可能にする、強力なコンテナオーケストレーションソリューションです。この包括的なチュートリアルでは、Docker Swarm クラスタの作成、構成、管理について詳細な洞察を提供します。重要な概念、ノードタイプ、サービスデプロイメント戦略、堅牢なコンテナ化された環境構築のためのベストプラクティスを網羅しています。

Docker Swarm の基礎

Docker Swarm の概要

Docker Swarm は、Docker 環境のためのネイティブなクラスタリングおよびコンテナオーケストレーションソリューションです。開発者は、Docker ノードのクラスタを作成および管理し、複数の Docker ホストを単一の仮想 Docker ホストに変換できます。

核心概念

Swarm クラスタのアーキテクチャ

graph TD A[Swarm マネージャー] --> B[ワーカーノード 1] A --> C[ワーカーノード 2] A --> D[ワーカーノード 3]

Swarm ノードタイプ

ノードタイプ 説明 役割
マネージャーノード クラスタの状態を制御 オーケストレーション、スケジューリング
ワーカーノード コンテナのワークロードを実行 サービスの実行

Swarm クラスタの初期化

## プライマリノードで Swarm を初期化
docker swarm init --advertise-addr 192.168.1.100

## ワーカー参加トークンを生成
docker swarm join-token worker

## ワーカーノードをクラスタに参加させる
docker swarm join --token < トークン > 192.168.1.100:2377

主要な機能

  • 分散型設計
  • 宣言型サービスモデル
  • スケーリングとロールアウト更新
  • サービスディスカバリ
  • ロードバランシング
  • セキュアな通信

サービスデプロイメントの例

## リプリケートされたサービスを作成
docker service create --replicas 3 --name web nginx

## サービスのスケール変更
docker service scale web=5

## サービスの更新
docker service update --image nginx:latest web

クラスタ構成

Swarm クラスタのトポロジー

graph TD A[マネージャーノード] --> B[ワーカーノード 1] A --> C[ワーカーノード 2] A --> D[ワーカーノード 3]

ノード初期化戦略

マネージャーノードの設定

## プライマリマネージャーで Swarm クラスタを初期化
docker swarm init --advertise-addr 192.168.1.100

## クラスタ参加トークンを表示
docker swarm join-token manager
docker swarm join-token worker

ワーカーノードの設定

## ワーカーノードをクラスタに参加させる
docker swarm join \
  --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
  192.168.1.100:2377

クラスタ構成パラメータ

パラメータ 説明 デフォルト値
Advertise Address ノードのネットワークインターフェース プライマリ IP
Listen Port Swarm 通信ポート 2377
Node Labels ノード選択のためのメタデータ なし

高度なクラスタ構成

## カスタムノードラベルを追加
docker node update --label-add type=frontend worker1

## ノードの可用性を設定
docker node update --availability drain worker2

ネットワーク構成

## オーバーレイネットワークを作成
docker network create \
  --driver overlay \
  --subnet 10.0.0.0/24 \
  my-network

サービス管理

サービスデプロイメントワークフロー

graph LR A[サービス作成] --> B[コンテナデプロイ] B --> C[サービススケール] C --> D[サービス更新] D --> E[パフォーマンス監視]

基本的なサービス作成

## 3つのレプリカを持つnginxサービスをデプロイ
docker service create \
  --name web-service \
  --replicas 3 \
  --publish 80:80 \
  nginx:latest

サービス構成オプション

オプション 説明
--replicas コンテナインスタンスの数 3
--update-parallelism 並列更新数 2
--constraint ノード配置ルール node.labels.type==frontend

サービススケーリング戦略

## サービスを動的にスケール変更
docker service scale web-service=5

## 水平スケーリング
docker service update \
  --replicas-max-per-node 2 \
  web-service

ロードバランシング構成

## カスタムロードバランシングを持つサービスを作成
docker service create \
  --name api-service \
  --replicas 4 \
  --publish mode=host,target=8080,published=80 \
  --update-delay 10s \
  api-image:latest

サービス更新メカニズム

## ロールアウト更新戦略
docker service update \
  --image nginx:latest \
  --update-parallelism 2 \
  --update-delay 10s \
  web-service

サービス監視

## アクティブなサービス一覧
docker service ls

## 特定のサービスの詳細情報
docker service ps web-service

まとめ

Docker Swarm を習得することで、開発者とシステム管理者は、分散システム全体でコンテナ化されたアプリケーションを効果的に管理できます。このチュートリアルでは、クラスタの初期化、ノードトポロジーの設定、サービスのデプロイ、サービスディスカバリ、ロードバランシング、セキュアな通信といった高度な機能を活用するための主要なテクニックを示しています。これらの基本的な理解により、チームはスケーラブルで回復力のあるコンテナインフラストラクチャを構築し、運用効率を高めることができます。