swarm モード導入ガイド

このチュートリアルは Docker Engine Swarm モードの機能を紹介します。始める前に、よろしければ 重要な概念 に慣れておいてください。

このチュートリアルは以下の作業を紹介します。

  • Docker Engine の swarm モードでクラスタを初期化
  • swarm にノードを追加
  • アプリケーション・サービスを swarm にデプロイ
  • swarm を使い始めた後の管理

このチュートリアルは、ターミナル・ウインドウのコマンドライン上で Docker Engine CLI コマンドを実行します。

Docker を初めて使う場合は、 Docker Engine について をご覧ください。

セットアップ

チュートリアルを進めるためには、以下の条件が必要です:

接続した3台のマシン

このチュートリアルでは、 Docker がインストール済みで、ネットワーク上で通信可能な Linux ホストが3台必要です。これらは物理マシン、仮想マシン、Amazon EC2 インスタンスや、何らかの方法でホストされたものであれば構いません。3台のホストをセットアップする手順は、 Swarm にデプロイ をご覧ください。

各マシンは、1つは manager( manager1 と呼びます)、2つは worker ( worker1worker2 )です。

注釈

チュートリアルの多くの手順は、1つのホストしかないような、単位ノードの swarm 上でも同じようにテストできます。マルチノードのコマンドは動作しませんが、swarm の初期化、サービス作成、サービスのスケールは行えます。

Linux マシン上に Docker Engine をインストール

Linux をベースとする物理コンピュータやクラウドが提供するコンピュータを、ホストとして使用する場合は、シンプルにプラットフォームに対応した Linux インストール手順 に従います。3台のマシンを起動したら、準備完了です。Linux マシン上の単一ノードおよび複数ノードの swarm 両方をテストできます。

Docker Desktop for mac か Docker Desktop for Windows を使う

別の方法として、 Docker Desktop for MacDocker Desktop for Windows アプリケーションをコンピュータ上にインストールします。このコンピュータの単一ノードもしくは複数ノードのどちらでもテストできます。

  • Docker Desktop for Mac や Windows では、swarm モードの単一ノード機能のテストを行えます。この中には、単一ノードの swarm 初期化、サービスの作成、サービスのスケールを含みます。
  • 現時点では、 Docker Desktop for Mac や Docker Desktop for Windows 単独では、複数ノード swarm のテストを行えません。しかしながら、単一ノードの Swarm セットアップでも適用できる例がいくつもあります。

manager マシンの IP アドレス

IP アドレスはホスト・オペレーティングシステム上で利用可能なネットワーク・インターフェースに対して割り当てる必要があります。swarm 上の全てのノードが、その IP アドレスに対して manager が接続するために必要です。

そのため、他のノードが manager ノードに通信するには、manager ノードの IP アドレスが必要になるため、この IP アドレスは固定しておくべきでしょう。

Linux や macOS では ifconfig を実行し、利用可能なネットワーク・インターフェースの一覧を表示します。

チュートリアルでは manager192.168.99.100 です。

ホスト間で開くプロトコルとポート

以下のポートの利用が必須です。いくつかのシステム上では、各ポートがデフォルトで開いています。

  • TCP port 2377 は、クラスタ管理通信のため
  • TCPUDPport 7946 は、ノード間の通信のため
  • UDP port 4789 はオーバレイ・ネットワーク・トラフィックのため

暗号化したオーバレイ・ネットワーク( --opt encrypted )の利用を計画中であれば、 ip プロトコル 50 (ESP) トラフィックの許可も必要です。

次は何をしますか?

環境のセットアップを終えたら、 swarm を作成 する準備が整いました。

参考

Getting Started with swarm mode
https://docs.docker.com/engine/swarm/swarm-tutorial/