Docker Swarm を使用してサービスのローリング アップデートを実装するためのサンプル コード

Docker Swarm を使用してサービスのローリング アップデートを実装するためのサンプル コード

1. Docker Swarm とは何ですか?

Docker Swarm は、Docker が公式に提供するクラスター管理ツールです。その主な機能は、複数の Docker ホストを 1 つに抽象化し、これらの Docker ホスト上のさまざまな Docker リソースを統一された入口から管理することです。 Swarm は Kubernetes に似ていますが、Kubernetes よりも軽量で機能も少ないです。

Docker Swarm は、Docker Compose と同様に、Docker の公式コンテナ オーケストレーション プロジェクトです。違いは、Docker Compose が単一のサーバーまたはホスト上に複数のコンテナを作成するためのツールであるのに対し、Docker Swarm は複数のサーバーまたはホスト上にコンテナ クラスター サービスを作成できることです。マイクロサービスの展開には、明らかに Docker Swarm の方が適しています。

Docker 1.12.0 以降では、Docker エンジン (docker swarm) に Docker Swarm が組み込まれ、サービス検出ツールが組み込まれました。以前のようにサービス検出のために Etcd や Consul を設定する必要がなくなりました。

2. Docker Swarmアーキテクチャ

この図全体は、実際にはいわゆるクラスター内にあり、1 つ以上の実際のサーバーに対応する場合があります。各サーバーに Docker がインストールされ、HTTP ベースの Docker API が有効になっています。このクラスターには、クラスター内のコンテナ リソースを管理するために使用される SwarmManager マネージャーがあります。マネージャーの管理対象はサーバーレベルではなく、クラスターレベルです。つまり、マネージャーを通じてクラスターに一般的な指示を出すことはできますが、特定のサーバーで何を行うかを指定することはできません (これも Swarm の本質です)。具体的な管理の実装方法としては、Manager が HTTP インターフェースを外部に公開し、外部のユーザーがこの HTTP インターフェースを通じてクラスターを管理します。少し大きいクラスターの場合は、専用のマネージャーとして実際のサーバーを用意するのが最適です。学習目的で、マネージャーと管理対象を同じサーバーに配置することもできます。

3. Docker Swarmサービスのローリングアップデート

Docker Swarm はスムーズなサービス アップグレードを実現できます。つまり、ダウンタイムなしでサービスが更新され、クライアントはそれを認識しません。具体的な例を通してこれを説明しましょう。ここでは、ノード に nginx ベースの Web アプリケーション サービスをデプロイします。同じアプリケーションの2つのバージョン(バージョン1とバージョン2)を作成します。

Dockerfile を作成し、docker build を使用してコンパイルします。

nginxから
RUN echo '<h1>Swarm:バージョン 1 <h1>' > /usr/share/nginx/html/index.html

注: Swarm クラスター内のすべてのノードがイメージにアクセスできるようにするために、生成されたイメージを独自のイメージ リポジトリにアップロードします。

dockerログイン
ビルドは docker によって実行されます。
docker push collenzhao/mynginx:v1

Swarmサービスを作成する、つまりイメージを介してコンテナを起動する

docker サービス作成 -p 7788:80 --replicas 3 --name myswarmtest collenzhao/mynginx:v1

docker service ls を使用してデプロイされたサービスを表示します。

docker service ps myswarmtest を通じてデプロイされたサービスの詳細情報を表示します。

効果は下の図に示されています

以前のDockerfileを更新します。バージョン番号が2になることに注意してください。

nginxから
RUN echo '<h1>Swarm:バージョン 2 <h1>' > /usr/share/nginx/html/index.html

docker buildを使用してコンパイルする

ビルドは docker によって実行されます。

Docker push を使用して Docker Hub にアップロードする

docker push collenzhao/mynginx:v2

以前にSwarmにデプロイされたサービスを更新すると、バージョン番号は2になります

docker サービス更新 --image collenzhao/mynginx:v2 myswarmtest

効果は以下のとおりです

これで、Docker Swarm でサービスのローリング アップデートを実装するためのサンプル コードに関するこの記事は終了です。Docker Swarm のローリング アップデートの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker Swarmを使用してWordPressを構築する方法
  • デプロイから基本操作までDocker Swarm
  • docker swarm は指定されたノード上で指定されたコンテナをどのように実行しますか?
  • Docker Swarm のサービス検出と負荷分散の原則の詳細な説明
  • docker swarm クラスターの障害と例外の詳細な説明
  • Docker Swarmを使用してクラスターを構築する方法
  • Docker Swarm 入門例
  • Docker 1.12 を使用してマルチホスト Docker Swarm クラスターを構築する詳細な説明
  • Docker Swarmの概念と使用法の詳細な説明

<<:  MySql5.x を MySql8.x にアップグレードする方法と手順

>>:  MySQL マルチテーブル結合入門チュートリアル

推薦する

case when文のエラー問題の詳細な説明

序文MySQL データベースでは、if else のような判断演算を使用することがあります。では、M...

HTML ウェブページにおけるさまざまなフォント形式の詳細

このセクションでは、テキストの変更の詳細から始めます。これにより、読者はさまざまな HTML フォン...

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

JavaScript を使用して QR コードを解析する 3 つの方法

目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...

PHP-HTMLhtml 重要な知識ポイントメモ(必読)

1. フレームセット、フレーム、iframeを使用して複数のウィンドウを実現する2. 画像上のマッ...

Dockerコンテナオーケストレーション実装プロセス分析

実際の開発環境や本番環境では、コンテナを独立して実行することはあまりなく、複数のコンテナを一緒に実行...

Javascriptのクロージャとアプリケーションの詳細な説明

目次序文1. クロージャとは何ですか? 1.1 クロージャは条件コードを満たす1.2 クロージャ生成...

HTML の marquee 属性の詳細な説明

このタグはHTML3.2の一部ではなく、MSIE3以降のカーネルでのみサポートされているため、IEカ...

SpringbootはDockerデプロイメントを統合し、Dockerイメージを構築する2つの方法を実装します。

Docker は、あらゆるアプリケーション用の軽量でポータブルな自己完結型コンテナーを簡単に作成で...

MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明

この記事では、例を使用して、MySQL マスター/スレーブ レプリケーションと読み取り/書き込み分離...

Tomcat の文字化けしたコードとポート占有の解決方法について簡単に説明します

Tomcat サーバーは、無料でオープン ソースの Web アプリケーション サーバーです。軽量のア...

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

Visual Studio Code + Reactをベースに開発環境を構築するプロセス

開発環境ウィンドウ開発ツール Visual Studio Codeノードのインストールとnpm Wi...

ユニアプリプロジェクトでのウォーターフォールレイアウトの実装

GitHubアドレス、気に入ったらスターを付けてくださいプラグインのプレビューチュートリアル1. プ...

VMware12 で Ubuntu19.04 デスクトップ版をインストールする (インストール チュートリアル)

1. 実験の説明仮想マシンに、 Ubuntu 19.04オペレーティングシステムを手動でインストー...