現代のソフトウェア開発において、Docker は非常に人気のある仮想化テクノロジーになっており、開発者はこれを使用してさまざまな環境で開発、テスト、デプロイを行うことができます。 Docker の重要な特徴は、異なるホスト上で実行できることです。そのため、マルチホスト環境で Docker 間の通信を実装する方法が注目されています。
この記事では、次の内容を含む、異なる Docker ホスト間の通信を実装する方法を紹介します:
1. Docker ネットワークの概念と特徴
Docker では、ネットワークはさまざまなコンテナーに通信機能を提供する独立したサブシステムです。 Docker ネットワークの重要な機能は、異なるネットワーク内の異なるコンテナを分離することであり、コンテナ間の通信はネットワーク経由で実現する必要があります。一般的な 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 つの方法で実現できます。
ポート マッピングを使用するためのサンプル コードは次のとおりです。
import requests response = requests.get('http://<host_ip>:<mapped_port>/<api_endpoint>')
オーバーレイ ネットワークを使用して異なるホスト上のコンテナーを接続する場合は、次の手順を実行する必要があります。
;
;
。
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 サイトの他の関連記事を参照してください。