Docker Swarm は、Docker によって開発されたコンテナ クラスター管理サービスです。バージョン 1.12.0 以降では、インストール後に Docker の一部 (バンドル ソフトウェア) となり、Swarm モードとも呼ばれ、追加のインストールは必要ありません。 Kubernetes と比較すると、Docker Swarm はシンプルなソフトウェアであり、物足りないようです。しかし、docker-compose との互換性がすべてを補います。クラスターの使用経験がない初心者の場合は、Docker Swarm から始めるのが良い選択です。 コンセプト Docker Swarm には主に以下の概念が含まれます。
Swarm 自体は「グループ」、群衆、または群れを意味します。これは、Docker を使用して接続された後のコンピュータ クラスターの状態を指します。 docker swarm コマンドを使用すると、クラスターを作成、参加、離脱できます。 ノードはコンピュータノードであり、Docker ノードとも考えられます。ノードは、マネージャーとワーカーの 2 つのカテゴリに分かれています。 Swarm には少なくとも 1 つのマネージャーが必要であり、一部の管理コマンドはマネージャーでのみ使用できます。どちらのタイプのノードもサービスを実行できますが、実行コマンドを実行できるのはマネージャーだけです。たとえば、docker node コマンドを使用して、マネージャー内でのみノードを表示、構成、削除できます。 スタックは、docker-compose に似たサービスのグループです。デフォルトでは、スタックはネットワークを共有し、相互にアクセス可能ですが、他のスタック ネットワークからは分離されています。このコンセプトは、配置の便宜のためだけのものです。 docker stack コマンドを使用すると、サービスを 1 つずつ操作する代わりに、スタックを簡単に操作できます。 サービスはコンテナの一種です。ユーザーにとって、サービスは Swarm とのやり取りの中心的なコンテンツです。サービスには 2 つの実行モードがあります。1 つはレプリケート モードであり、サービスが実行するコンテナーの数を指定します。もう 1 つはグローバル モードであり、実行条件を満たすすべてのノードでこのタイプのコンテナーを実行します。 docker service コマンドは Swarm 内のサービスを操作できます。 タスクとは、Swarm 実行コマンドの最小単位であるコンテナを実行するタスクを指します。サービスを正常に実行するには、1 つ以上のタスク (サービスのコンテナーの数によって異なります) を実行して、各コンテナーが正常に起動されるようにする必要があります。通常、ユーザーはタスクではなくサービスを操作します。 負荷分散にはリバースプロキシも含まれます。 Swarm は Ingress ロード バランシングを使用します。つまり、各ノードの公開ポートへのアクセスはすべて、実際のサービスに自動的にプロキシされます。一般的な原理を下の図に示します。 複製モード サービス: いくつかのサービス: ... 展開する: モード: 複製 レプリカ: 3 デフォルトではモードは複製されるため、この行は省略できます。レプリカのデフォルトの数は 1 です。つまり、このサービスは 1 つのコンテナーのみを起動します。このモードでは、複数のサービスをオンデマンドで起動でき、Swarm が自動的に調整します。ノードが複数のコンテナを起動することもあります。 グローバルモード サービス: いくつかのサービス: ... 展開する: モード: グローバル 配置: ... デプロイ可能なすべてのノードに対して 1 つをデプロイします。配置により、条件を満たすノードを制限し、不適切なノードへの展開を回避できます。 操作する よく使用される特定の操作の一部をここに示します。 最初のノードの作成 docker swarm init --advertise-addr $IP $IP は、現在のノードの外部からアクセス可能な IP アドレスであり、他のノードがアドレス指定するのに便利です。 このようにして、マネージャー ノードが 1 つだけ含まれる Swarm が初期化されます。 Swarmに新しいノードを追加する マネージャー ノードで次のコマンドを実行して、ノードに参加する方法を確認します。 $ docker swarm 参加トークンマネージャー この Swarm にマネージャーを追加するには、次のコマンドを実行します。 docker swarm に参加 --token SWMTKN-1-2zspelk468gb6wgw5adea4wlbw4kfy3q1uhr86zpafl9m5a3ho-ezs4fylj526e801b3cl0pojr5 10.174.28.52:2377 $ docker swarm join-token ワーカー この Swarm にワーカーを追加するには、次のコマンドを実行します。 docker swarm に参加 --token SWMTKN-1-2zspelk468gb6wgw5adea4wlbw4kfy3q1uhr86zpafl9m5a3ho-164iqklrfv8o3t55g088hylyk 10.174.28.52:2377 どの Swarm にも参加していないマシンで、上記のコマンド docker swarm join --token ... を実行して、この Swarm のマネージャー ノードまたはワーカー ノードになります。 ノードラベルを設定する マネージャー ノードでは、任意のノードにラベルを設定できます。 docker ノード更新 $node_name --label-add main=true $node_name はノード ID または HOSTNAME を設定します。ラベルはキーと値のペアの形式です。main=true の場合、main がキーで、true が値です。 ラベルを設定した後、Compose ファイル内の配置の制約を使用して、使用可能なノードを制限できます。 サービス: いくつかのサービス: ... 展開する: 配置: 制約: - node.labels.main == true ... 上記の構成により、Label が main=true に設定されているノードでのみ some-service を使用できるようになります。 サービスの開始と停止 docker スタックをデプロイ $stack_name -c docker-compose.yaml -c other.yaml ... $stack_name はスタック名です。 -c を使用して複数の docker-compose ファイルを指定したり、同じスタックの下に複数のファイルを一括でデプロイしたりできます。これらの YAML ファイルの記述は、次の固有の構成が追加され、Swarm シナリオでサポートされていない一部の構成が無視されることを除いて、基本的に元の docker-compose コマンドと同じです。 docker service create を使用して手動でスタックを作成するのではなく、docker-compose ファイルを使用してスタックをオーケストレーションすることをお勧めします。詳細な設定項目については、Compose ファイル バージョン 3 リファレンス | Docker ドキュメントを参照してください。 スタック内のすべてのサービスを停止するには、次のコマンドを実行します。 docker スタック rm $stack_name 実行中のサービスのイメージを更新する docker サービス更新 --image $image:$tag $service_name 以上がDocker Swarmの概念と使い方の詳しい説明です。Docker Swarmの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。 以下もご興味があるかもしれません:
|
<<: Vueはツリー構造の追加、削除、変更、チェックのサンプルコードを実装します
>>: MySQLストレージフィールドタイプのクエリ効率についての簡単な理解
目次実際のプロジェクトで遭遇する要件実装が間違っているところもある私は個人的に、実装するより良い方法...
最近、本番環境のデータベースがログデータを狂ったように書き込み、主キー値のオーバーフローを引き起こし...
この記事では、MySQL 8.0.15のインストールと設定方法を参考までに紹介します。具体的な内容は...
最近、あるプロジェクトに取り組んでいたとき、自分のプロジェクトでは CSS3 のアニメーション技術を...
1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...
目次シンプルなSpringbootプロジェクトを作成する1. pom.xmlでSpring Boot...
目次MySQL マルチバージョン同時実行1. マルチバージョン同時実行制御1. 一貫した読み取り2....
この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...
問題:あるサーバー上の PHP プログラムは、localhost アドレス経由でデータベースに接続で...
1. ダウンロード1. MySQL msi 公式 Web サイトから最新のダウンロードをクリックす...
1. mysqldump バックアップ方法では論理バックアップが使用されます。最大の欠点は、バック...
1. 仮想マシンにLinuxシステムをインストールし、仮想マシンを起動し、rootとパスワードを入力...
1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...
この記事では、9グリッドクリックの色変更効果を実現するためのJavaScriptの具体的なコードを参...
純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...