現代のソフトウェア開発において、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>')
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:
以上がDocker 間の通信を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。