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
コマンドを使います。
ip1
、ip2
、ip3
はディスカバリ・バックエンド用ノードの 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
コマンドには以下のオプションがあります:
--advertise
, --addr
- Docker Engine のアドバタイズ用 IP とポート番号¶
--advertise <ip>:<ポート>
か --addr <ip>:<ポート>
を使い Docker Engine のアドバタイズ(Advertise; 周知用) IP アドレスとポート番号を指定します。例: --advertise 172.30.0.161:4000
。他の Swarm マネージャは、対象の Swarm マネージャに接続するため、ここで指定した IP アドレスとポート番号を使う必要があります。
--advertise
は環境変数 $SWARM_ADVERTISE
でも指定できます。
--heartbeat
- ハートビート間隔¶
--heartbeat "<間隔>s"
をt迂回、マネージャとプライマリ・マネージャ間のハードビート間隔を秒単位で指定します。ハードビートとはマネージャが正常で到達可能であるかを確認します。デフォルトでは、この間隔は 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/