ホームページ 運用・保守 Docker Docker 間の通信を実装する方法

Docker 間の通信を実装する方法

Apr 18, 2023 pm 02:07 PM

現代のソフトウェア開発において、Docker は非常に人気のある仮想化テクノロジーになっており、開発者はこれを使用してさまざまな環境で開発、テスト、デプロイを行うことができます。 Docker の重要な特徴は、異なるホスト上で実行できることです。そのため、マルチホスト環境で Docker 間の通信を実装する方法が注目されています。

この記事では、次の内容を含む、異なる Docker ホスト間の通信を実装する方法を紹介します:

  1. Docker ネットワークの概念と特性、
  2. 同じホスト上での実行Docker コンテナの通信方法;
  3. 異なるホストで Docker コンテナを実行する通信方法;
  4. Docker Compose を使用して複数のコンテナの通信を管理します。

1. Docker ネットワークの概念と特徴

Docker では、ネットワークはさまざまなコンテナーに通信機能を提供する独立したサブシステムです。 Docker ネットワークの重要な機能は、異なるネットワーク内の異なるコンテナを分離することであり、コンテナ間の通信はネットワーク経由で実現する必要があります。一般的な Docker ネットワーク タイプは次のとおりです。

  1. ブリッジ モード: デフォルト モード。すべてのコンテナが同じ仮想ネットワークに接続されます。
  2. ホスト モード: コンテナーをホストの物理ネットワークに直接接続すると、コンテナーはホストの IP アドレスを介して通信できます。
  3. オーバーレイ モード: 複数の Docker ホスト間に分離された仮想ネットワークを作成するために使用され、ホスト間のコンテナー通信を実現できます。

Docker では、カスタマイズされたネットワークを通じて、異なるコンテナ間の通信も実現できます。

2. 同一ホスト上で動作する Docker コンテナ間の通信方法

同一ホスト上で動作する Docker コンテナ間の通信が最も簡単に実現できます。デフォルトでは、Docker ブリッジ ネットワークは、IP アドレスを介したすべてのコンテナ間の通信を許可します。したがって、同じホスト上の異なるコンテナ間の通信は、コンテナの IP アドレスを使用して行うだけで済みます。

Docker では、次のコマンドを使用して、実行中のコンテナの IP アドレスを表示できます:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name>
ログイン後にコピー

同じホスト上の Docker コンテナ間の通信のサンプル コードは次のとおりです:

import requests

response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
ログイン後にコピー
ログイン後にコピー

3. 異なるホストで Docker コンテナを実行する場合の通信方法

異なる Docker コンテナが異なるホストで実行される場合、それらは同じホストに属していないため、コンテナの IP アドレスを介して通信することはできません。通信網。したがって、それらの間で通信するには他の手段を使用する必要があります。

Docker では、異なるホスト上のコンテナ通信は次の 2 つの方法で実現できます。

  1. ポート マッピングを使用してアプリケーション ポートをホスト ポートにマッピングし、他のホスト上のコンテナが通信できるようにします。ホストは、ホストの IP アドレスとポートを介してコンテナにアクセスできます。
  2. オーバーレイ ネットワークを使用して、異なるホスト上のコンテナを同じ仮想ネットワークに接続し、コンテナの IP アドレスを介して直接通信できるようにします。

ポート マッピングを使用するためのサンプル コードは次のとおりです。

import requests

response = requests.get('http://<host_ip>:<mapped_port>/<api_endpoint>')
ログイン後にコピー

オーバーレイ ネットワークを使用して異なるホスト上のコンテナーを接続する場合は、次の手順を実行する必要があります。

    すべての Docker ホストで Swarm モードを有効にします:
  1. docker swarm init;
  2. Docker ホストでオーバーレイ ネットワークを作成します:
  3. docker network create -d overlay < network_name>
  4. オーバーレイ ネットワークでコンテナを起動します:
  5. docker service create --name --network
オーバーレイ ネットワークでの相互通信のサンプル コードは次のとおりです:

import requests

response = requests.get('http://<container_ip>:<port>/<api_endpoint>')
ログイン後にコピー
ログイン後にコピー
4. Docker Compose を使用して複数のコンテナーの通信を管理する

Docker Composeは複数の Docker コンテナを管理するためのツールで、YAML ファイルを通じて複数のコンテナの起動メソッドとパラメータを定義できます。 Docker Composeでは、コンテナ間の通信方法をYAMLファイルで設定できます。

以下は、Docker Compose を使用して複数のコンテナ間の通信を管理するサンプル YAML コードです:

version: '3'

services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: 'mydb'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: 'root'
      MYSQL_ROOT_PASSWORD: 'root'
    volumes:
      - ./db:/var/lib/mysql
    ports:
      - '3306:3306'
    networks:
      - my-network

  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
    networks:
      - my-network
    depends_on:
      - db

networks:
  my-network:
ログイン後にコピー
上の例では、db コンテナとネットワークは、「」という名前のネットワークを定義することによって接続されています。 my-network" Web コンテナは同じ仮想ネットワークに接続されており、ポート マッピングを使用して MySQL の 3306 ポートをホストの 3306 ポートにマッピングします。

概要

この記事の導入部を通じて、異なる Docker ホスト間の通信方法を習得したはずです。同じホスト上のコンテナ通信の場合は、コンテナの IP アドレスのみを使用する必要があります。異なるホスト上のコンテナ通信の場合は、ポート マッピングとオーバーレイ ネットワークを使用できます。さらに、Docker Compose を使用すると、複数のコンテナ間の通信の管理が容易になります。

以上がDocker 間の通信を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Docker Swarmクラスターにアプリケーションを展開するにはどうすればよいですか? Docker Swarmクラスターにアプリケーションを展開するにはどうすればよいですか? Mar 17, 2025 pm 04:20 PM

この記事では、プロセス中の準備、展開ステップ、セキュリティ対策をカバーするDocker Swarmへのアプリケーションの展開を詳細に説明します。

Kubernetesのポッド、展開、サービスとは何ですか? Kubernetesのポッド、展開、サービスとは何ですか? Mar 17, 2025 pm 04:25 PM

この記事では、Kubernetesのポッド、展開、およびサービスについて説明し、コンテナ化されたアプリケーションの管理における役割について詳しく説明しています。これらのコンポーネントが、アプリケーション内のスケーラビリティ、安定性、および通信をどのように強化するかについて説明します。(159文字)

Kubernetesでアプリケーションをスケーリングするにはどうすればよいですか? Kubernetesでアプリケーションをスケーリングするにはどうすればよいですか? Mar 17, 2025 pm 04:28 PM

この記事では、手動スケーリング、HPA、VPA、およびCluster Autoscalerを使用してKubernetesのスケーリングアプリケーションについて説明し、スケ​​ーリングを監視および自動化するためのベストプラクティスとツールを提供します。

Docker Swarmにローリングアップデートを実装するにはどうすればよいですか? Docker Swarmにローリングアップデートを実装するにはどうすればよいですか? Mar 17, 2025 pm 04:23 PM

この記事では、Docker Swarmにローリングアップデートを実装して、ダウンタイムなしでサービスを更新することについて説明します。サービスの更新、更新パラメーターの設定、監視の進捗状況、スムーズな更新の確保をカバーしています。

Docker Swarmでサービスを管理するにはどうすればよいですか? Docker Swarmでサービスを管理するにはどうすればよいですか? Mar 17, 2025 pm 04:22 PM

記事では、Docker Swarmのサービスの管理、ダウンタイムなしで作成、スケーリング、監視、更新に焦点を当てています。

Kubernetesでの展開を管理するにはどうすればよいですか? Kubernetesでの展開を管理するにはどうすればよいですか? Mar 17, 2025 pm 04:27 PM

この記事では、さまざまなツールとベストプラクティスを使用して、作成、更新、スケーリング、監視、および自動化に焦点を当てたKubernetesの展開の管理について説明します。

Dockerコンテナにレート制限とリソースの割り当てを実装する方法は? Dockerコンテナにレート制限とリソースの割り当てを実装する方法は? Mar 12, 2025 pm 06:07 PM

この記事では、Dockerのレート制限とリソースの割り当ての実装について詳しく説明しています。 CGROUPを使用してCPU、メモリ、およびI/Oの制限をカバーし、リソースの疲労を防ぐためのベストプラクティスを強調します。 ネットワークレートの制限、ような外部ツールが必要です

低遅延アプリケーション用にDockerを最適化する最良の方法は何ですか? 低遅延アプリケーション用にDockerを最適化する最良の方法は何ですか? Mar 14, 2025 pm 02:00 PM

この記事では、低遅延アプリケーションのDockerを最適化する戦略について説明し、画像サイズの最小化、軽量ベース画像の使用、リソースの割り当てとネットワーク設定の調整に焦点を当てています。

See all articles