Docker Swarm サービス オーケストレーション コマンドの詳細な説明

Docker Swarm サービス オーケストレーション コマンドの詳細な説明

1. はじめに

Docker には、タスクを構成する複数の Docker コンテナをオーケストレーションおよび管理できる、docker-compose と呼ばれるオーケストレーション ツールがあります。同様に、Swarm クラスターでは、docker スタックを使用して、関連するサービスのグループをオーケストレーションおよび管理できます。

Docker スタックも docker-compose.yml ファイルに似た yaml ファイルであり、手順は基本的に同じです。しかし、compose と比較すると、build、links、network_mode はサポートされていません。 Docker スタックには新しいコマンド deploy があります。

注: スタックは命令をサポートしていません

2. デプロイ

Deploy は、Swarm サービスのデプロイメントとランタイムに関連する構成を指定するために使用され、docker stack deploy を使用して Swarm クラスターがデプロイされた場合にのみ有効になります。このオプションは、docker-compose up または docker-compose run を使用する場合は無視されます。デプロイ オプションを使用するには、compose ファイルのバージョンが 3 または 3+ である必要があります。

バージョン: '3'
サービス:
  レディス:
    画像: redis:alpine
    展開する:
      レプリカ: 6
      アップデート構成:
        並列処理: 2
        遅延: 10秒
      再起動ポリシー:
        条件: 失敗時

(1) エンドポイントモード

スウォームサービス検出モードを指定する

  • endpoint_mode: vip - Docker は、クライアントがクラスター サービスにアクセスするための「フロント エンド」として、仮想 IP (VIP) を Swarm クラスター サービスに割り当てます。 Docker は、クライアントと利用可能なワーカー ノード間でサービスの要求をルーティングします。クライアントは、サービスに参加しているノードの数や、それらのノードの IP/ポートを知る必要はありません。 (これがデフォルトモードです)
  • エンドポイントモード: dnsrr -

DNS ラウンドロビン (DNSRR) サービス検出では、単一の仮想 IP は使用されません。 Docker は、サービス名の DNS クエリが IP アドレスのリストを返すように、サービスの DNS エントリを設定し、クライアントがそのうちの 1 つに直接接続します。 DNS ラウンドロビンは、独自のロード バランサーを使用する場合や、Windows アプリケーションと Linux アプリケーションが混在している場合に便利です。

注: バージョン 3.3+

バージョン: "3.3"
 
サービス:
  ワードプレス:
    画像: wordpress
    ポート:
      -8080:80
    ネットワーク:
      - かぶせる
    展開する:
      モード: 複製
      レプリカ: 2
      エンドポイントモード: vip
 
  マイスク:
    画像: mysql
    ボリューム:
       -db-data:/var/lib/mysql/data
    ネットワーク:
       - かぶせる
    展開する:
      モード: 複製
      レプリカ: 2
      エンドポイントモード: dnsrr
 
ボリューム:
  dbデータ:
 
ネットワーク:
  かぶせる:

(2)ラベル

サービスのラベルを指定します。これらのラベルはサービスにのみ設定され、サービスのコンテナーには設定されません。

バージョン: "3"
サービス:
  ウェブ:
    画像: ウェブ
    展開する:
      ラベル:
        com.example.description: "このラベルは Web サービスに表示されます"

代わりにコンテナにラベルを設定するには、deploy の外部で labels キーを使用します。

バージョン: "3"
サービス:
  ウェブ:
    画像: ウェブ
    ラベル:
      com.example.description: 「このラベルは、Web サービスのすべてのコンテナーに表示されます」

(3)モード

グローバル (クラスター ノードごとに 1 つのコンテナーのみ) またはレプリカ (コンテナーの数を指定)。デフォルト値がコピーされます。

バージョン: '3'
サービス:
  ワーカー:
    イメージ: dockersamples/examplevotingapp_worker
    展開する:
      モード: グローバル

(4)配置

制約と設定の指定

バージョン: '3'
サービス:
  デシベル:
    画像: postgres
    展開する:
      配置:
        制約:
          - node.role == マネージャー
          -engine.labels.operatingsystem==ubuntu 14.04
        設定:
          - スプレッド: node.labels.zone

(5)レプリカ

サービスが複製モード (デフォルト) の場合、サービスに対して実行するコンテナの数を指定できます。

バージョン: '3'
サービス:
  ワーカー:
    イメージ: dockersamples/examplevotingapp_worker
    ネットワーク:
      -フロントエンド
      - バックエンド
    展開する:
      モード: 複製
      レプリカ: 6

(6)リソース

リソース制限の設定

バージョン: '3'
サービス:
  レディス:
    画像: redis:alpine
    展開する:
      リソース:
        制限:
          CPU: '0.50'
          メモリ: 50M
        予約:
          CPU: '0.25'
          メモリ: 20M

次の例では、redis サービスは、メモリを 50 MB 以下、使用可能な処理時間 (CPU) を 0.50 (50%) 以下に制限し、メモリを 20 MB、CPU 時間を 0.25 (常に使用可能) 使用しています。

(7)RESTART_POLICY

コンテナが終了したときに再起動するかどうか、また再起動する方法を設定します。再起動コマンドを置き換えます。

  • 条件: なし、失敗時、任意 (デフォルトは任意)
  • delay : 再起動の試行間の待機時間 (デフォルト 0)
  • max_attempts : 再起動の試行回数(デフォルトでは成功するまで再起動)
  • ウィンドウ: 再起動が成功したかどうかを確認する前に待機するウィンドウ時間
バージョン: "3"
サービス:
  レディス:
    画像: redis:alpine
    展開する:
      再起動ポリシー:
        条件: 失敗時
        遅延: 5秒
        最大試行回数: 3
        ウィンドウ: 120秒

(8) アップデート_CONFIG

構成サービスのアップグレード方法

  • 並列処理: 同時にアップグレードされるコンテナの数
  • 遅延: コンテナのアップグレード間隔
  • failure_action: アップグレードが失敗した後のアクション (続行、ロールバック、一時停止。デフォルトは一時停止)。
  • monitor: 更新が正常に完了するまでの時間 (ns|us|ms|s|m|h)。
  • (デフォルト 0 秒) max_failure_ratio: 更新中に許容される失敗率。
  • rder: 更新時の操作の順序。最初に停止 (新しいタスクを開始する前に古いタスクを停止します) または最初に開始 (新しいタスクが最初に開始され、実行中のタスクが一時的に重複します) (デフォルトでは最初に停止) 注: v3.4 以降でのみサポートされます。
バージョン: '3.4'
サービス:
  投票する:
    イメージ: dockersamples/examplevotingapp_vote:before
    依存:
      - レディス
    展開する:
      レプリカ: 2
      アップデート構成:
        並列処理: 2
        遅延: 10秒
        順序: 最初に停止

(9) 依存する

サービス間の依存関係を表す

バージョン: '3'
サービス:
  ウェブ:
    建てる: 。
    依存:
      -db
      - レディス
  レディス:
    画像: redis
  デシベル:
    画像: postgres

(10)DNS

カスタム DNS サーバー。単一の値またはリストを指定できます。

ドメイン名: 8.8.8.8
ドメイン名:
  - 8.8.8.8
  - 9.9.9.9

(11) DNSサーチ

dns_search: example.com
dns_検索:
  - dc1.example.com
  dc2.example.com の URL は http://www.dc2.example.com/ です。

(12)環境

環境変数を追加します。配列または辞書を使用できます。ブール値(true/false、yes/no)は、YML パーサーによって True または False に変換されないように、引用符で囲む必要があります。

環境:
  RACK_ENV: 開発
  表示: 'true'
  セッションシークレット:
 
環境:
  - RACK_ENV=開発
  - 表示=true
  -セッションシークレット

(13)暴露する

コンテナ内のポートを開いても、ホスト上のポートは公開されません。関連付けられているサービスのみがポートにアクセスできるようになります。内部ポートのみ指定できます。 

さらす:
 - 「3000」
 - 「8000」

以上がDocker Swarmサービスオーケストレーションコマンドの詳細な内容です。Docker Swarmサービスオーケストレーションの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Docker Swarm のサービス検出と負荷分散の原則の詳細な説明
  • docker swarm クラスターの障害と例外の詳細な説明
  • Docker 1.12 を使用してマルチホスト Docker Swarm クラスターを構築する詳細な説明
  • Docker をインストールして Docker Swarm モードで使用する方法
  • Docker Compose サービスオーケストレーションの詳細な説明

<<:  MySQLスローログに関する知識のまとめ

>>:  TOM.COMのホームページリニューアルの経験

推薦する

MySQLの手順を完全に削除する

目次1. まずMySQLサーバーを停止する2. MySQLサーバーをアンインストールする3. MyS...

MySQLプロセスを安全かつ適切にシャットダウンする方法

序文この記事では、mysqld プロセスをシャットダウンするプロセスと、MySQL インスタンスを安...

MySQL インデックスの長さ制限の原理の分析

この記事は主に、MySQL インデックスの長さ制限の原理の分析を紹介します。サンプル コードを通じて...

MySQL slow_log テーブルを InnoDB エンジンに変更することはできません。詳細な説明

背景mysql.slow_log からスロー クエリ ログを取得するのは遅く、テーブルは csv テ...

MySQLの累積集計原理と使用例の分析

この記事では、例を使用して、MySQL 累積集計の原理と使用方法を説明します。ご参考までに、詳細は以...

ウェブデザインにおける画像フォーマットとデザインの関係を詳しく説明

なぜこの領域のコンテンツを整理したいのでしょうか。それは、油絵の具とキャンバスを理解する必要があり、...

Nginx の http リソース リクエスト制限の詳細な説明 (3 つの方法)

前提条件: nginx には、ngx_http_limit_conn_module モジュールと n...

MySQL ログインおよび終了コマンドの形式

mysql ログインのコマンド形式は次のとおりです。 mysql -h [hostip] -u [ユ...

nginxとlvsのメリットとデメリット、そして適切な使用環境

まず最初に、ロード バランシングとは何かについて説明します。ロード バランシングとは、リクエストの内...

MySQL 5.1 のパスワードを変更し、MySQL データベースにリモートでログインする方法

mysql ユーザーを作成し、承認します。形式: 「ユーザー パスワード」で識別されるユーザー@ログ...

MySQL での一時テーブルの使用例

ここ2日間ちょっと忙しくて、公式アカウントも数日更新が止まってしまいました。その結果、何人かの読者か...

LinuxとGNUシステムの関係の詳細な説明

目次私たちが毎日実行している Linux システムとは何でしょうか? LinuxカーネルとGNUシス...

Vue で Excel ストリーム ファイルをダウンロードし、ダウンロード ファイル名を設定する方法

目次概要1. URL経由でダウンロード2. aタグのダウンロード属性とblobコンストラクタを組み合...

Ubuntu 16.04 で Python 3 を使用して Django プロジェクトを作成し、実行する方法

ステップ1: Djangoプロジェクトを作成するターミナルを開き、書き込みたいプロジェクトのアドレス...

Linux における mv コマンドの高度な使用例

序文mv コマンドは、move の略語で、ファイルを移動したり、ファイル名を変更したり (ファイルの...