swarm モード導入ガイド

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

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

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

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

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

接続した3台のマシン

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

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

注釈

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

Docker Engine 1.12 以上

このチュートリアルでは、各ホストマシン上に Docker Engine 1.12 以上をインストールする必要があります。Docker Engine をインストールしたら、各マシン上で Docker Engine デーモンが実行中かどうか確認します。Docker の最新版は、以下の方法で入手できます。

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

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

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

別の方法として、 Docker Desktop for MacDocker Desktop for Windows アプリケーションをコンピュータ上にインストールします。そのコンピュータ上で単一ノードと複数ノード swarmの両方をテストできます。しかし、複数ノードのシナリオをテストするには Docker Machine が必要です。

  • Docker Desktop for Mac や Windows では、swarm モードの単一ノード機能のテストを行えます。この中には、単一ノードの swarm 初期化、サービスの作成、サービスのスケールを含みます。 Hyperkit (Mac) や Hyper-V (Windows) 上の Docker "Moby" が提供するのは、単一の swarm ノードです。
  • 現時点では、 Docker Desktop for Mac や Docker Desktop for Windows 単独では、複数ノード swarm のテストを行えません。しかしながら、 Docker Machine に含まれるバージョンであれば、swarm ノードを作成し( Docker Machine をローカル VM で始めるには をご覧ください)、以降すべての複数ノード機能のチュートリアルを行えます。この場合、Docker Desktop for Mac や Docker Desktop for Windows ホスト上でコマンドを実行しますが、Docker ホスト自身は swarm に参加しません。ノードを作成したあとは、Docker Desktop for Mac や Docker Desktop for Windows を実行している Mac ターミナルや Windows PowerShell を通し、すべての swarm コマンドを実行可能です。

manager マシンの IP アドレス

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

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

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

Docker Machine を使っている場合は、マネージャの IP アドレスの取得は docker-machine lsdocker-machine ip <MACHINE-NAME> 、たとえば docker-machine ip manager1 のようにの、どちらかで行えます。

チュートリアルでは 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/