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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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