はじめに
この実験では、docker swarm init コマンドを使用して Docker Swarm を初期化する方法を学びます。まずは基本的なスワームを初期化して、基本的なプロセスを理解します。
基本的な初期化をベースに、より高度なシナリオを探索します。これには、ネットワーク通信を制御するために特定のアドバタイズアドレスでスワームを初期化すること、セキュリティを強化するために自動ロックを有効にすること、およびカスタムデータパスポートを構成することが含まれます。これらの手順を通じて、Docker Swarm 環境のセットアップとカスタマイズの実践的な経験を積むことができます。
基本的なスワームを初期化する
このステップでは、基本的な Docker Swarm を初期化する方法を学びます。Docker Swarm は、Docker のネイティブなクラスタリングとオーケストレーションのソリューションです。これを使用すると、Docker ノードのクラスタを作成および管理することができます。
スワームを初期化する前に、現在の Docker の状態を確認しましょう。
docker info
Docker のインストールに関する情報が表示されるはずです。「Swarm」セクションを探してください。ここには、Swarm が非アクティブであることが示されているはずです。
基本的なスワームを初期化するには、docker swarm init コマンドを使用します。このコマンドは、現在の Docker ホストをスワームマネージャに変換します。
docker swarm init
コマンドを実行した後、スワームが初期化されたことを示す出力が表示され、他のノードをワーカーとしてスワームに参加させるためのコマンドが提供されます。
スワームが正常に初期化されたことを確認しましょう。
docker info
これで、「Swarm」セクションには、Swarm がアクティブであり、現在のノードがマネージャであることが表示されるはずです。
また、docker node ls コマンドを使用して、スワーム内のノードを一覧表示することもできます。
docker node ls
現在のノードが「Ready」の状態と「Manager」の役割で一覧表示されるはずです。
特定のアドバタイズアドレスでスワームを初期化する
前のステップでは、基本的な Docker Swarm を初期化しました。このステップでは、スワームを初期化し、スワームマネージャが他のノードにアドバタイズするアドレスを指定する方法を学びます。これは、複数のネットワークインターフェースを持つ環境や、スワーム通信に使用するアドレスを制御したい場合に便利です。
まず、既存のスワームから脱退する必要があります。これは docker swarm leave コマンドを使用して行うことができます。これが唯一のノードであり、マネージャであるため、--force フラグを使用する必要があります。
docker swarm leave --force
ノードがスワームから脱退したことを確認する出力が表示されるはずです。
次に、現在のマシンの IP アドレスを見つけましょう。ip addr show コマンドを使用し、ネットワークインターフェース(一般的には eth0 または ens*)に関連付けられた IP アドレスを探します。
ip addr show
スワームのアドバタイズアドレスとして使用したい IP アドレスを特定します。たとえば、IP アドレスが 172.17.0.2 の場合、それを使用します。
ここで、再度スワームを初期化しますが、今回は --advertise-addr フラグを使用してアドバタイズアドレスを指定します。<YOUR_IP_ADDRESS> を見つけた実際の IP アドレスに置き換えてください。
docker swarm init --advertise-addr <YOUR_IP_ADDRESS>
基本的な初期化と同様の出力が表示されますが、参加コマンドには指定したアドバタイズアドレスが含まれるようになります。
スワームが正しいアドバタイズアドレスで初期化されたことを確認するには、スワームをインスペクトすることができます。
docker swarm inspect --pretty
出力の AdvertiseAddr フィールドを探してください。指定した IP アドレスと一致するはずです。
自動ロックを有効にしてスワームを初期化する
このステップでは、オートロック機能を有効にして Docker Swarm を初期化する方法を学びます。オートロックは、Docker デーモンの再起動後にスワームをロック解除するために復号化キーが必要になることで、スワームを不正アクセスから保護するのに役立ちます。
まず、前のステップと同じように、既存のスワームから脱退します。
docker swarm leave --force
次に、--autolock フラグを使用してスワームを初期化します。アドバタイズアドレスを指定したい場合は、再度 --advertise-addr フラグを含めることもできます。<YOUR_IP_ADDRESS> をマシンの IP アドレスに置き換えてください。
docker swarm init --autolock --advertise-addr <YOUR_IP_ADDRESS>
--autolock を使用してスワームを初期化すると、出力に「Swarm auto-lock key」が含まれます。このキーを安全な場所に保存することが重要です。 Docker デーモンの再起動後にスワームをロック解除するために必要になります。
オートロックが有効になっていることを確認するには、スワームをインスペクトすることができます。
docker swarm inspect --pretty
出力の AutoLockManagers フィールドを探してください。これは true に設定されているはずです。
これは実験環境の単一ノードのスワームであるため、デーモンの再起動後にキーが必要になるオートロックの完全な効果を体験することはできません。ただし、このステップではこの機能を有効にする方法を示しています。
カスタムデータパスポートでスワームを初期化する
このステップでは、Docker Swarm を初期化し、データパスネットワークにカスタムポートを指定する方法を学びます。データパスネットワークは、サービス検出やロードバランシングなどのタスクのためにスワームノード間の通信に使用されます。デフォルトでは、これはポート 4789 を使用します。ネットワーク上の他のサービスと競合する場合は、このポートを変更する必要があるかもしれません。
まず、既存のスワームから脱退します。
docker swarm leave --force
次に、--data-path-port フラグを使用してスワームを初期化し、カスタムデータパスポートを指定します。ここでは、ポート 5789 を例として使用しましょう。必要に応じて、--advertise-addr フラグと --autolock フラグも含めることができます。<YOUR_IP_ADDRESS> をマシンの IP アドレスに置き換えてください。
docker swarm init --data-path-port 5789 --advertise-addr < YOUR_IP_ADDRESS > --autolock
初期化の出力が表示され、オートロックを有効にした場合はオートロックキーも表示されます。
カスタムデータパスポートが正しく設定されていることを確認するには、スワームをインスペクトすることができます。
docker swarm inspect --pretty
出力の DataPathPort フィールドを探してください。指定したカスタムポートが表示されるはずで、この例では 5789 です。
これで、様々なオプションで Docker Swarm を初期化する手順は終了です。基本的なスワームの初期化、アドバタイズアドレスの指定、オートロックの有効化、およびカスタムデータパスポートの設定方法を学びました。
まとめ
この実験では、Docker Swarm を初期化する基本的なプロセスを学びました。まず、docker swarm init コマンドを使用して基本的なスワームを初期化し、docker info の変化を観察し、docker node ls でマネージャーロールを確認しました。
その後、より高度な初期化オプションを探索しました。docker swarm leave --force を使用して既存のスワームから脱退し、--advertise-addr フラグを使用して特定のアドバタイズアドレスを指定しながらスワームを再初期化する方法を学びました。これにより、スワーム通信に使用されるネットワークインターフェースを制御する方法が示されました。



