ヒント
Swarm モード機能を導入した Docker Engine 1.12 はリリース候補(release candidate)機能であり、後方互換を考慮していない可能性があります。一般リリース(generally available)になるまで、いくつかの機能が変わる可能性があります。
Swarm モード概要¶
Docker Engine を swarm モードで使うには、 Docker リリース GitHub リポジトリ から Docker Engine v1.12.0-rc1
以降をインストールします。あるいは Docker for Mac か Docker for Windows の最新版をインストールします。
Docker Engine 1.12 は swarm モードを取り込んでいます。Swarm は Docker Engine のクラスタをネイティブに(当たり前に)管理します。Docker CLI で swarm(訳者注;「群れ」という意味で、Docker Engine のクラスタを表す)を作成し、swarm にアプリケーション・サービスをデプロイし、swarm の挙動を管理します。
Docker バージョン v1.12.0-rc1
より低いバージョンをお使いであれば、 Docker Swarm のドキュメントをご覧ください。
Swarm の主な機能¶
- Docker Engine にクラスタ管理を統合 : Docker Engine CLI を使い Docker Engine の Swarm(群れ)を作成します。ここにアプリケーション・サービスをデプロイできます。Swarm の作成や管理のために、追加のオーケストレーション・ソフトウェアは不要です。
- 分散化の設計 : デプロイ時点ではノードに役割(role)を与えません。Docker Engine は実行時に役割を明確化します。ノードの種類は、マネージャ(manager)とワーカ(worker)です。この両方を Docker Engine でデプロイできます。つまり1つのディスク・イメージから Swarm(のクラスタ)全体を構築できます。
- 宣言型サービス・モデル : Docker Engine は宣言型の構文を使います。これを使い、アプリケーション・スタックの様々なサービスの期待状態(desired state)を定義できます。たとえば、ウェブ・フロントエンド・サービスを構成するアプリケーションは、メッセージのキューイング・サービスとデータベース・バックエンドを持つと記述できるでしょう。
- スケーリング(scaling) : サービスごとに実行したいタスク数を宣言できます。スケールアップやスケールダウン時は、swarm マネージャは期待状態を維持するため、自動的にタスクの追加や削除を行います。
- 期待状態の調整(reconciliation) : Swarm は絶えずクラスタ状態の監視と調整をします。監視するのは自分が示した望ましい状態であり、少しでも差違があれば調整の処理を行います。
- マルチホスト・ネットワーク : アプリケーション用のオーバレイ・ネットワークを指定できます。アプリケーションの初期化もしくは更新時に、Swarm はオーバレイ・ネットワーク上のコンテナに自動的にアドレスを割り当てます。
- サービス・ディスカバリ(service discovery) : Swarm は各サービスにユニークな DNS 名を割り当て、実行中のコンテナに対する負荷分散(load balance)をします。各 Swarm は内部 DNS サーバ(internal DNS server)を持ち、クラスタ内の全てのコンテナを DNS で問い合わせ(クエリ)可能です。
- 負荷分散(load balancing) : Swarm を使えば、サービス用のポートを外部のロードバランサへ公開できます。必要なのは、ノード間でどのようにサービス・コンテナを分散するかを Swarm で指定するだけです。
- デフォルトで安全 : Swarm 上の各ノードは安全に通信できるように、 TLS 相互認証(TLS mutual authentication)と暗号化を自分自身と他の全てのノード間で強制します。
- ローリング・アップデート : ロールアウト時に、サービス更新をノード単位で徐々に適用できます。異なるノード群の間にサービスをデプロイ時、swarm マネージャはノードごとの遅延を制御します。何か問題があれば、サービスのタスクを以前の状態にロールバックできます。
次は何をしますか?¶
- Swarm の 重要な概念 を学ぶ
- Swarm チュートリアル を始める
- swarm モード CLI コマンドを調べる
- swarm init
- swarm join
- swarm create
- swarm inspect
- swarm ls
- swarm rm
- swarm scale
- swarm tasks
- swarm update
参考
- Swarm mode overview
- https://docs.docker.com/engine/swarm/