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 SQLクエリ操作

余計なことは言わないで、コードだけ見てみましょう〜 プロジェクト番号を選択、 sum(case wh...

Vueのプラグインの仕組みとインストールの詳細を深く理解する

序文: Vue を使用する場合、多くの場合、カスタム プラグインをいくつか使用して記述し、 Vue....

表内のコンテンツオーバーフローのレイアウト方法について

コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...

Docker コンテナは実行後に終了します (実行を継続する方法)

現象Dockerコンテナを起動する docker run –name [コンテナ名] [コンテナID...

両側にCSS固定レイアウト、中央に適応レイアウトを実装

フローティング、フローティング埋め込み div、配置、フレックスという 4 つの一般的な方法と原則を...

Nginx サーバーで URL リンクを設定する方法

LNMPのようなアーキテクチャを持つウェブサイトは、一般的にPHPフレームワークに基づいて開発されて...

Nginx 書き換えジャンプの適用シナリオの詳細な説明

アプリケーションシナリオ1: ドメイン名ベースのリダイレクト会社の古いドメイン名は www.accp...

Linux mysql5.5 を mysql5.7 にアップグレードする手順と落とし穴

目次Linux MySQL 5.5 が MySQL 5.7 にアップグレードされました1. mysq...

Tomcatを自動的に開始するサービスとして設定するにはどうすればいいでしょうか?最も簡単な方法

Tomcat が自動的にサービスを開始するように設定します。最近、問題が発生しました。サーバー上のプ...

良いデザインについて

<br />「良いデザインとは何か」と答える 1 万人に対して、少なくとも 1 万 1 ...

Centos7 に Docker をインストールします (2020 の最新バージョンが利用可能、コピーして貼り付けるだけ)

操作については、こちらの公式ドキュメントを参照してください。インストール1. 古いバージョンの do...

透明な入力ボックスにアイコンを追加する HTML コード

最近、弁護士推薦のウェブサイトを作成していたのですが、検索ボックスに問題がありました。検索ボックス内...

プロキシはVue3データの双方向バインディングの原理を実現します

目次1. proxy と Object.defineProperty の利点2. プロキシ監視オブジ...