Swarmは、DockerホストのクラスターをデプロイするためのDockerネイティブソリューションです。これを使用して、ローカルマシンまたはサポートされているクラウドプラットフォームで実行されているDockerホストのクラスターをすばやく展開できます。[etcd]やhttps://www.consul.io/[Consulなどの外部キーと値のストアを使用する必要がありました。1.12では、外部のディスカバリサービスは不要になりました。Dockerには、そのまま使用できるメモリ内のキーと値のストアが付属しているためです。1.12のSwarm機能を使用してDockerマシンのクラスターをデプロイする方法を学びます。数十、数百、または数千のDockerホストで構成されるクラスターを実行できますが、このチュートリアルで設定するクラスターは、マネージャーノードと2つのワーカーノードで構成され、合計3つのクラスターメンバーになります。このチュートリアルを完了すると、クラスターにノードを簡単に追加できるようになります。前提条件このチュートリアルでは、次のものが必要です。Dockerがインストールされたローカルマシン。ローカルマシンは、任意のLinuxディストリビューション、またはWindowsまたはmacOSを実行できます。[公式インストーラー]を使用してDockerをインストールします。7にDockerをインストールして使用する方法]。[このガイド]を使用して生成してください。トークンを生成するときは、読み取り/書き込みスコープがあることを確認してください。これがデフォルトであるため、生成中にオプションを変更しない場合、読み取り/書き込み機能があります。コマンドラインで使いやすくするために、その記事で与えられているように変数にトークンを割り当ててください。これを使用して3つのホストを作成します。Machineが含まれます。7上のDockerマシンでリモートDockerホストをプロビジョニングおよび管理する方法]。手順1-クラスターノードのプロビジョニングクラスター用にいくつかのDockerホストを作成する必要があります。復習として、次のコマンドは単一のDockerizedホストをプロビジョニングします。APIトークンに評価される環境変数です。$少なくとも3つのノードで構成されるクラスターをセットアップし、一度に1つのホストをプロビジョニングするために、これを行う必要があることを想像してください。このコマンドをいくつかの簡単なBashスクリプトと組み合わせて使用​​することで、任意の数のDockerホストのプロビジョニングプロセスを自動化できます。+」という3つのDockerホストを作成します。doneコマンドが正常に完了したら、DigitalOceanダッシュボードにアクセスするか、次のコマンドを入力して、すべてのマシンが作成されたことを確認できます。ls出力は次のようになり、ノードのIPアドレスを検索するためのクイックリファレンスとして機能します。v1.12.2この時点で、3つのDockerizedホストがすべて作成され、各ホストのIPアドレスがあります。1.12.xを実行していますが、まだDockerクラスターの一部ではありません。Swarmワーカーとして構成します。Swarmトラフィックを許可するためのファイアウォールルールの設定クラスターには、マネージャーとして機能する少なくとも1つのノードが必要ですが、実稼働セットアップでは、3つのマネージャーをお勧めします。このセットアップでは、最初のノードを選択してSwarmマネージャーにします。他の2つのノードはワーカーノードになります。クラスタが正常に機能するには、クラスタの一部となるノードで特定のネットワークポートを開く必要があります。それには、これらのポートを通過するトラフィックを許可するようにファイアウォールを構成する必要があります。そのタスクを実行するために使用できる3つの異なるファイアウォールアプリケーションがあるため、各ファイアウォールアプリケーションのノードで実行する必要があるコマンドは、別の記事に記載されています。[このガイド]に従って、各ホストのファイアウォールを構成します。マネージャーで適切なポートを開き、繰り返して2つのクライアントノードでポートを開きます。この手順を完了したら、クラスターマネージャーを初期化できます。「++」がクラスターマネージャーになることを決定したので、ローカルマシンからノードにログインします。sshコマンドプロンプトは、その特定のノードにログインしているという事実を反映して変更されます。ノードをSwarmマネージャーとして構成するには、次のコマンドを入力します。`はノードのIPアドレスです。+`の出力またはDigitalOceanダッシュボードから取得できます。次のような出力が表示されます。*)と、他のノードをクラスターに追加する方法の指示が含まれています。Swarmができました。残りのノードをワーカーとして追加しましょう。ステップ4-クラスターへのノードの追加このステップを完了するには、別のターミナルを開いて、今のところSwarmマネージャーへのログインに使用したターミナルタブまたはウィンドウをそのままにしておくことをお勧めします。ssh次に、このコマンドを実行します。+」はSwarmマネージャーのIPです。\:2377コマンドが正常に実行されると、次の応答が表示されます。worker.「」からログアウトし、「」でこのプロセスを繰り返してクラスターに追加します。これで、2つのワーカーノードがクラスターに追加されました。Swarmがあり、すべてのノードが同期されています。Swarm管理コマンドをマネージャーノードで実行する必要があります。したがって、マネージャーの追加に使用したターミナルに戻り、このコマンドを入力してクラスターのすべてのメンバーを表示します。ls出力は次のようになります。Swarmとそのノード(マネージャーと2人のワーカー)を扱っていることを示しています。マネージャーノードで実行できる他の管理コマンドを表示するには、次のように入力します。--helpクラスターの詳細情報については、マネージャーまたはワーカーで次のコマンドを使用できます(汎用のDockerコマンドです)。info出力はこのようなものであり、クラスターのステータス(アクティブ*または*保留中)、クラスター内のノードの数、および特定のノードがマネージャーかワーカーかを示す必要があります。それでは、クラスタでサービスを実行してみましょう。Swarmを起動して実行したので、テストコンテナーを実行して、マネージャーがそれをどのように処理するかを見てみましょう。`コマンドを使用してサービスとしてデプロイされます。service」コマンドはマネージャーノードでのみ実行できます。それでは、公式のNginxコンテナイメージを使用してWebサーバーサービスを展開しましょう。nginxこのコマンドでは、Nginxコンテナーのポート「80」をクラスターのポート「80」にマッピングし、デフォルトのNginxページにどこからでもアクセスできるようにします。クラスタで実行されているサービスを表示するには、次を入力します。ls出力はこの形式を取る必要があります。*列には、実行中のサービスのインスタンス数が表示されます。+`に続けてサービス名を使用すると、サービスが実行されているノードを確認できます。ps出力は次のようになります。`で実行されています。+」を指定することでアクセスできます。Nginxのデフォルトページが表示されます。メッシュネットワーキングの魔法により、ノードで実行されているサービスには、クラスターの他のノードでアクセスできます。このNginxサービスには、ブラウザで実行しているノードだけでなく、クラスター内の任意のノードのIPアドレスを指定することでもアクセスできます。Swarmのもう1つの機能は、サービスをスケーリングする機能です。サービスの追加インスタンスをスピンアップします。+`サービスを5つのインスタンスにスケーリングしたいとします。そのためには、次のコマンドを入力するだけで、システムはさらに4つのインスタンスを作成します。+`の出力には、新しいインスタンスが開始されたノードが表示されます。+」で開始されたことを示しています。最後に、サービスがダウンした場合、元のノードが使用できなくなった場合、同じノードまたは別のノードでサービスが自動的に再起動されます。Swarmをセットアップするのがどれほど簡単かを見てきました。クラスターでいくつかの管理タスクを実行する方法を見てきました。Swarmコマンドを表示するには、Swarmマネージャーで次のコマンドを実行します。[公式ドキュメントページ]をご覧ください。DigitaloOceanの他のhttps://www.digitalocean.com/community/tags/docker?type=tutorials[Docker関連の記事]をチェックしてください。