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のホームページリニューアルの経験

推薦する

ウェブページが自動的にデュアルコアブラウザの高速モードを呼び出すようにします(Webkit)

コードサンプルヘッドタグにコード行を追加します: XML/HTML コードコンテンツをクリップボード...

MySQL の大きなデータ テーブルにフィールドを追加する方法

序文フィールドの追加は誰でもよく知っていると思います。簡単に記述できます。MySQL テーブルにフィ...

4つのReactコンポーネントにおけるDOMスタイル設定の詳細な説明

1. インラインスタイル仮想DOMにインラインスタイルを追加するには、式を使用してスタイルオブジェク...

MySQL Community Server 5.6.39 のインストール方法

この記事では、MySQLのダウンロードとインストールの詳細なチュートリアルを記載しています。具体的な...

Tomcat と WebLogic で純粋な HTML ファイルを展開するプロセスの分析

1. まず、純粋なHTMLファイルにはindex.htmlというエントリが必要です。 2. Tomc...

elasticsearchを使用してインデックスデータを定期的に削除する

1. ESを使うこともあるリソースが限られている、またはビジネス上のニーズにより、最新の期間のデータ...

HTML シンボルからエンティティへのアルゴリズムのチャレンジ

チャレンジ:文字列内の文字 &、<、>、" (二重引用符)、および &...

Pure CSS と Flutter はそれぞれブリージング ライト効果を実現します (サンプル コード)

前回、非常に熱心なファンから、月を呼吸する光の効果にできるかどうか尋ねられました。月の大きさの写真が...

HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)

Web デザインにおけるツリーとは何ですか?簡単に言うと、リンクをクリックするとサブディレクトリが展...

実用的な基本的な Linux sed コマンドのサンプルコード

Linux ストリーム エディターは、データ センターでスクリプトを実行するのに便利な方法です。これ...

ファイアウォールの iptables 戦略を使用して Linux サーバー上のポートを転送する方法

2つの異なるサーバー間の転送ポート転送を有効にするまず、デフォルトでは無効になっている IP 転送機...

MySQL の問題を解決する: MSVCR120.dll が見つからないため、コードの実行を続行できません

1. 問題MySQL の初期化時に発生する問題は、次のとおりです。 1. 「MSVCR120.dll...

入力ファイルのカスタムボタンの美化(デモ)

以前にも同じような記事を書いたことがありますが、js スクリプトを使用しており、ファイルパスを表示で...

Vue3 はメッセージコンポーネントの例を実装します

目次コンポーネント設計最終的なコンポーネントAPIの定義コンポーネント構造の定義テンプレートとスタイ...

トップナビゲーションバーメニューを作成するためのHTML+CSS

ナビゲーションバーの作成:技術要件: CS HTMLタグ達成目的:ナビゲーションバーメニューの作成コ...