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

現代のソフトウェア開発において、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></container_name>

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

import requests

response = requests.get('http://<container_ip>:<port>/<api_endpoint>')</api_endpoint></port></container_ip>

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

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

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

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

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

import requests

response = requests.get('http://<host_ip>:<mapped_port>/<api_endpoint>')</api_endpoint></mapped_port></host_ip>

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

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

import requests

response = requests.get('http://<container_ip>:<port>/<api_endpoint>')</api_endpoint></port></container_ip>
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 までご連絡ください。
Mastering Docker:Linuxユーザー向けガイドMastering Docker:Linuxユーザー向けガイドApr 18, 2025 am 12:08 AM

LinuxでDockerを使用すると、開発効率が向上し、アプリケーションの展開を簡素化できます。 1)Ubuntu画像を引く:dockerpullubuntu。 2)ubuntuコンテナを実行:Dockerrun-itubuntu/bin/bash。 3)nginxを含むDockerFileを作成します:fromubuntu; runapt-getupdate && apt-getinstall-ynginx; expose80。 4)画像の作成:dockerbuild-tmy-nginx。 5)コンテナの実行:Dockerrun-D-P8080:80

LinuxのDocker:アプリケーションとユースケースLinuxのDocker:アプリケーションとユースケースApr 17, 2025 am 12:10 AM

Dockerは、Linuxのアプリケーションの展開と管理を簡素化します。 1)Dockerは、アプリケーションとその依存関係を軽量でポータブルコンテナにパッケージ化するコンテナ化されたプラットフォームです。 2)Linuxでは、DockerはCgroupと名前空間を使用して、コンテナの分離とリソース管理を実装します。 3)基本的な使用には、画像の引き込みと実行容器が含まれます。 DockerComposeなどの高度な使用は、マルチコンテナーアプリケーションを定義できます。 4)一般的に使用されるDockerLogsとDockerexecコマンドをデバッグします。 5)パフォーマンスの最適化は、マルチステージの構造により画像サイズを縮小することができ、DockerFileをシンプルに保つことがベストプラクティスです。

Docker:移植性とスケーラビリティのためのコンテナ化アプリケーションDocker:移植性とスケーラビリティのためのコンテナ化アプリケーションApr 16, 2025 am 12:09 AM

Dockerは、アプリケーションのパッケージ化、配布、およびアプリケーションの携帯性とスケーラビリティを改善するために使用されるLinuxコンテナテクノロジーベースのツールです。 1)DockerBuildおよびDockerrunコマンドを使用して、Dockerコンテナを構築および実行できます。 2)DockerComposeを使用して、マルチコンテナーDockerアプリケーションを定義および実行して、マイクロサービス管理を簡素化します。 3)マルチステージの構造を使用すると、画像サイズを最適化し、アプリケーションの起動速度を向上させることができます。 4)コンテナログの表示は、コンテナの問題をデバッグする効果的な方法です。

Dockerによってコンテナを起動する方法Dockerによってコンテナを起動する方法Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

Dockerからログを表示する方法Dockerからログを表示する方法Apr 15, 2025 pm 12:24 PM

Dockerログを表示する方法は次のとおりです。たとえば、Docker Logsコマンドを使用します。たとえば、Docker logs container_name docker execコマンドを使用して /bin /shを実行し、logファイルを表示します。 cat /var/log/container_name.log docker-compose -f docker-comのDocker ComposeのDocker-Composeログを使用します。

Dockerコンテナの名前を確認する方法Dockerコンテナの名前を確認する方法Apr 15, 2025 pm 12:21 PM

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

Docker用のコンテナを作成する方法Docker用のコンテナを作成する方法Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

Dockerによってコンテナを出る方法Dockerによってコンテナを出る方法Apr 15, 2025 pm 12:15 PM

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

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。