join - Swarm ノードの作成

動作条件:Swarm マネージャで join を使う前に、 こちらのディスカバリのドキュメント に書かれているディスカバリ・バックエンドを構築します。

join コマンドは Swarm ノードを作成します。Swarm ノードはクラスタ内でコンテナを実行する場所という役割があります。一般的なクラスタは複数の Swarm ノードを持ちます。

Swarm ノードを作成するには、次の構文を使います。

$ docker run swarm join [OPTIONS] <discovery>

例えば、Swarm ノードを高可用性クラスタ対応マネージャに接続するには、次のように実行します。

$ docker run -d swarm join --advertise=172.30.0.69:2375 consul://172.30.0.161:8500

あるいは、Swarm ノード作成時、Docker Swarm ノード間で TLS 認証を有効にするには、次のように実行します。

$ sudo docker run -d swarm join --addr=node1:2376 token://86222732d62b6868d441d430aee4f055

引数

join コマンドは引数を1つだけ指定できます。

<discovery> - ディスカバリ・バックエンド

Swarm ノードを作成する前に、 ディスカバリ・トークンの作成ディスカバリ・バックエンドのセットアップ が必要です。

Swarm ノードの作成時、 <discovery> 引数を使って以下のバックエンドを指定可能です。

  • token://<token>
  • consul://<ip1>/<path>
  • etcd://<ip1>,<ip2>,<ip2>/<path>
  • file://<path/to/file>
  • zk://<ip1>,<ip2>/<path>
  • [nodes://]<iprange>,<iprange>

それぞれの項目は:

  • <token> はDocker Hub のホステッド・ディスカバリ・サービスによって生成されるトークンです。このトークンを作成するには create コマンドを使います。
  • ip1ip2ip3 はディスカバリ・バックエンド用ノードの IP アドレスとポート番号を指定します。
  • path (オプション)はディスカバリ・バックエンドのキーバリュー・ストアのパスを指定します。複数のクラスタを1つのバックエンドで管理する場合は、各クラスタ毎にキーバリューのペアを記述する必要があります。
  • path/to/file はSwarm マネージャとクラスタのメンバであるノード情報の一覧と、それぞれの静的な IP アドレスのリストを指定したファイルのパスを指定します。
  • iprange は特定のポート番号を利用する IP アドレスの範囲を指定します。

以下は <discovery> 引数の指定例です:

  • ディスカバリ・トークン: token://0ac50ef75c9739f5bfeeaf00503d4e6e
  • Consul ノード: consul://172.30.0.165:8500

<discovery> は環境変数 $SWARM_DISCOVERY でも指定可能です。

より詳しい情報やサンプルについては、 Docker Swarm ディスカバリ をご覧ください。

オプション

join コマンドには以下のオプションがあります:

--heartbeat - ハートビート間隔

--heartbeat "<間隔>s" を使い、マネージャとプライマリ・マネージャ間のハードビート間隔を秒単位で指定します。ハードビートとはマネージャが正常で到達可能であるかを確認します。デフォルトでは、この間隔は 60 秒です。

--ttl - エフェメラル・ノードの期限を設定

--ttl "<間隔>s" を使い、エフェメラル・ノードに対する TTL (time-to-live) 間隔を秒数で指定します。デフォルトの間隔は 180s です。

--delay - 一斉登録しないようランダム遅延を [0s,delay] で指定

--delay "間隔<s>" の形式で、ディスカバリバックエンドがノードを登録するまで、ランダムに遅延させる最大秒数を指定します。多数のノードをデプロイする時、ランダムに登録間隔の遅延を発生することで、ディスカバリ・バックエンドが飽和しないように(応答不能にならないように)します。

--discovery-opt - ディスカバリ・オプション

--discovery-opt <値> を使いディスカバリオプションを指定します。これには Consul や etcd ディスカバリ・サービスが使用する TLS ファイル(CA 公開鍵証明書、証明書、プライベート鍵)の指定も含みます。ディスカバリ・オプションは何度も指定できます。例:

--discovery-opt kv.cacertfile=/path/to/mycacert.pem \
--discovery-opt kv.certfile=/path/to/mycert.pem \
--discovery-opt kv.keyfile=/path/to/mykey.pem \

より詳しい情報は Docker Swarm ディスカバリ をご覧ください。

参考

join — Create a Swarm node
https://docs.docker.com/swarm/reference/join/