Docker を使用してコンテナーの水平拡張と負荷分散を行う方法
Docker を使用してコンテナの水平拡張と負荷分散を行う方法
はじめに:
クラウド コンピューティング テクノロジの継続的な発展により、コンテナ化テクノロジは現在 1 つになりました。アプリケーションを構築、デプロイ、管理するための最も一般的な方法。現在最も人気のあるコンテナ化プラットフォームである Docker は、便利なアプリケーションのパッケージ化とデプロイメント方法を提供するだけでなく、コンテナの水平拡張と負荷分散もサポートします。この記事では、Dockerを使ってコンテナの水平拡張や負荷分散を行う方法と、具体的なコード例を詳しく紹介します。
1. Docker コンテナの水平拡張
コンテナの水平拡張とは、コンテナの数を増やすことによってアプリケーションのスループットと同時実行機能を向上させることを指します。 Docker には、コンテナーの水平拡張を実現するための複数の方法が用意されており、一般的な 2 つの方法を以下に紹介します。
- Docker Compose を使用してコンテナの水平拡張を実現する
Docker Compose は Docker によって正式に提供されたツールで、YAML ファイルを通じて複数のコンテナの構成と関係を定義し、それらのバッチ処理を実装できます。管理。このファイル内のコンテナの数を変更することで、コンテナの水平方向の拡張を簡単かつ迅速に実現できます。以下は、Web アプリケーションとデータベースの構成を含む Docker Compose ファイルの例です。
version: '3' services: web: build: . ports: - "80:80" depends_on: - db db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root
Web アプリケーションのコンテナーの数を 1 から 3 に拡張するとします。上記のファイル内の Web サービスのレプリカ属性を 3 に変更するだけです:
version: '3' services: web: build: . ports: - "80:80" depends_on: - db replicas: 3 db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root
次に、次のコマンドを使用してコンテナを起動して管理します:
$ docker-compose up -d
Docker Compose が自動的に作成を支援します。 Webアプリケーション用の3つのコンテナを管理し、コンテナの水平拡張を実現します。
- Docker Swarm を使用してコンテナの水平拡張を実現します
Docker Swarm は、Docker によって公式に提供されるコンテナ オーケストレーションおよびクラスター管理ツールであり、複数のノード上で Docker コンテナをスケジュールおよび管理することでこれを実現します。コンテナの拡張。以下は Docker Swarm 構成ファイルの例です:
version: '3' services: web: image: nginx:latest deploy: replicas: 3 restart_policy: condition: on-failure
Docker Swarm が提供するコマンドを使用すると、コンテナーを迅速に作成および管理し、コンテナーの水平拡張を実現できます:
$ docker stack deploy -c docker-compose.yml myapp
使用方法 上記のコマンドを使用すると、上記の構成ファイルで定義された Web サービスを、3 つのコンテナーを含む myapp という名前のサービスに作成できます。 Docker Swarm は、クラスター内の異なるノード上でこれら 3 つのコンテナーを自動的に作成および管理し、コンテナーの水平拡張を実現します。
2. Docker コンテナの負荷分散
負荷分散とは、アプリケーションの処理能力と可用性を向上させるために、複数のコンテナ間でリクエストを均等に分散することを指します。 Docker ではコンテナの負荷分散を実現するさまざまな方法が提供されており、一般的に使用される 2 つの方法を以下に紹介します。
- Docker の組み込みロード バランサーの使用
Docker にはラウンドロビン アルゴリズムに基づく組み込みロード バランサーがあり、リクエストを複数のコンテナーに均等に自動的に分散できます。複数の同一のコンテナを同じポートにマッピングするだけで、負荷分散を実現できます。以下は、2 つの Web アプリケーションの構成を含む Docker Compose ファイルの例です。
version: '3' services: web1: build: . ports: - "8080:80" web2: build: . ports: - "8081:80"
上記の構成では、Web アプリケーションのリクエストは web1 コンテナーと web2 コンテナーに均等に分散されます。
- サードパーティのコンテナ オーケストレーション ツールを使用する
Docker に付属のロード バランサーに加えて、いくつかのサードパーティのコンテナ オーケストレーション ツールを使用して、より強力で柔軟なロード バランシングを実現することもできます。たとえば、Nginx をリバース プロキシ サーバーとして使用して、リクエストを複数のコンテナに分散できます。以下は Nginx 構成ファイルの例です:
http { upstream backend { server web1:80; server web2:80; } server { listen 80; location / { proxy_pass http://backend; } } }
上記の構成では、web1 と web2 の 2 つのコンテナーを含む backend という名前の負荷分散クラスターを定義しました。 Nginx は、設定に従ってリクエストを 2 つのコンテナに均等に分散します。
結論:
この記事の導入部を通じて、Docker がコンテナーの水平拡張と負荷分散を実現するための豊富な機能とツールを提供していることがわかります。 Docker Compose を使用しても Docker Swarm を使用しても、コンテナーの水平拡張を簡単に実現できます。コンテナーの負荷分散は、Docker の組み込みロード バランサーまたはサードパーティのコンテナー オーケストレーション ツールを使用して実現することもできます。これらの機能とツールを使用すると、コンテナ化されたアプリケーションの構築と管理が容易になり、アプリケーションのパフォーマンスと可用性が向上します。
参考資料:
- Docker 公式ドキュメント: https://docs.docker.com/
- Docker Compose 公式ドキュメント: https://docs.docker 。 com/compose/
- Docker Swarm 公式ドキュメント: https://docs.docker.com/engine/swarm/
以上がDocker を使用してコンテナーの水平拡張と負荷分散を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Docker画像を作成する手順:ビルド命令を含むDockerFileを書きます。 Docker Buildコマンドを使用して、ターミナルで画像を作成します。画像にタグを付け、Dockerタグコマンドを使用して名前とタグを割り当てます。

Docker画像を更新する手順は次のとおりです。最新の画像タグ新しい画像をプルする新しい画像は、特定のタグのために古い画像を削除します(オプション)コンテナを再起動します(必要に応じて)

Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

Dockerの外部ホストにファイルをコピーする方法:Docker CPコマンドを使用:Docker CP [Options]< Container Path> <ホストパス>。データボリュームの使用:ホストにディレクトリを作成し、-vパラメーターを使用してコンテナを作成するときにディレクトリをコンテナにマウントして、双方向ファイルの同期を実現します。

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Dockerバージョンを取得するには、次の手順を実行できます。Dockerコマンド「Docker -version」を実行して、クライアントバージョンとサーバーバージョンを表示します。 MacまたはWindowsの場合は、DockerデスクトップGUIのバージョンタブまたはDockerデスクトップメニューのバージョン情報を表示することもできます。

Dockerに画像を保存するには、Docker Commitコマンドを使用して、指定されたコンテナの現在の状態、Syntax:Docker Commit [Options]コンテナID画像名を含む新しい画像を作成できます。画像をリポジトリに保存するには、Docker Pushコマンド、Syntax:Docker Push Image Name [:Tag]を使用できます。保存された画像をインポートするには、Docker Pullコマンド、Syntax:Docker Pull Image Name [:Tag]を使用できます。

Dockerコンテナを終了する4つの方法:コンテナ端子でCtrl Dを使用するコンテナターミナルに出口コマンドを入力しますDocker stop< container_name>コマンドを使用するDocker Kill< container_name>ホストターミナルのコマンド(フォース出口)
