Docker と Linux: コンテナ間のネットワーク通信を実装するにはどうすればよいですか?
Docker と Linux: コンテナ間のネットワーク通信を実装するにはどうすればよいですか?
はじめに:
コンテナ テクノロジーは、最新のアプリケーションの開発と展開において重要な役割を果たします。コンテナーテクノロジーを使用すると、アプリケーションとその依存関係を独立したコンテナーにパッケージ化できるため、アプリケーションの移植性と一貫性が確保されます。ただし、複数のコンテナを接続してネットワーク通信を可能にする必要がある場合、コンテナ間のネットワーク通信の構成が非常に重要になります。この記事では、Docker 環境と Linux 環境でコンテナ間のネットワーク通信を実装する方法を紹介します。
- Docker のネットワーク モード
Docker は、コンテナー ネットワーク通信をサポートするために、次の 4 つの異なるネットワーク モードを提供します。 - ブリッジ モード (ブリッジ): デフォルト モード、コンテナーは接続されています。仮想ブリッジを介してホスト ネットワークに接続します。
- ホスト モード (ホスト): コンテナーは、ネットワークを分離せずにホスト ネットワークを直接使用します。
- none モード: コンテナにはネットワーク インターフェイスがなく、外部ネットワークから完全に分離されています。
- コンテナ モード (コンテナ): コンテナはネットワーク名前空間を共有し、他のコンテナに直接アクセスできます。
- コンテナ間のネットワーク通信の例
次に、簡単な例を使用して、Docker 環境と Linux 環境でコンテナ間のネットワーク通信を実装する方法を示します。 2 つのコンテナーがあり、1 つは Web コンテナー、もう 1 つは DB コンテナーであると仮定し、Web コンテナーが DB コンテナーによって提供されるデータベースにアクセスできることを期待します。
まず、コンテナ間の通信用のネットワークを作成する必要があります。次のコマンドを使用して、my_network という名前のブリッジ ネットワークを作成できます。
$ docker network create my_network
次に、Web サービスを提供する Web コンテナを作成して実行する必要があります。次のコマンドを使用して、web_container という名前のコンテナーを作成し、my_network ネットワークに接続できます。
$ docker run -d --name web_container --network my_network web_image
ここで、web_image は自分たちで構築した Web コンテナー イメージです。
次に、データベース サービスを提供するために db コンテナを作成して実行する必要があります。次のコマンドを使用して、db_container という名前のコンテナを作成し、my_network ネットワークに接続できます。
$ docker run -d --name db_container --network my_network db_image
このうち、db_image は自分で構築した db コンテナ イメージです。
これで、2 つのコンテナを作成し、同じネットワークに接続しました。次に、Web コンテナが db コンテナによって提供されるデータベースにアクセスできることを確認する必要があります。
Web コンテナでは、db_container の名前を使用してアクセスできます。たとえば、Web コンテナのコードで次の接続文字列を使用してデータベースに接続できます。
jdbc:mysql://db_container:3306/my_database
この接続文字列では、db_container は DB コンテナの名前、3306 はデフォルトのポート番号です。 my_database はデータベースの名前です。
上記の手順により、Web コンテナと DB コンテナ間のネットワーク通信が正常に実装されました。 Web コンテナは、コンテナ名を通じて db コンテナによって提供されるデータベース サービスにアクセスできます。
結論:
Docker および Linux 環境では、ネットワーク モードを構成してネットワークを作成することで、コンテナ間のネットワーク通信を実現できます。ネットワーク接続を適切に設定することで、コンテナ間の通信チャネルを確立でき、複数のコンテナのデプロイメントとアプリケーションの分散アーキテクチャが可能になります。
コード例:
Web コンテナーの Dockerfile:
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y apache2 EXPOSE 80 CMD ["apache2ctl", "-D", "FOREGROUND"]
DB コンテナーの Dockerfile:
FROM ubuntu:latest RUN apt-get update RUN apt-get install -y mysql-server EXPOSE 3306 CMD ["mysqld"]
Web コンテナーの Java コード例:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Main { public static void main(String[] args) { String url = "jdbc:mysql://db_container:3306/my_database"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { String query = "SELECT * FROM my_table"; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { System.out.println(rs.getString("column1")); } } catch (SQLException e) { e.printStackTrace(); } } }
上記は、Docker 環境と Linux 環境でコンテナ間のネットワーク通信を実装する方法の紹介と例です。適切なネットワーク構成と接続設定を使用すると、コンテナ間で簡単に通信し、より柔軟でスケーラブルなアプリケーション アーキテクチャを構築できます。
以上がDocker と Linux: コンテナ間のネットワーク通信を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック

この記事では、パターンマッチング、ファイル検索、テキスト操作、グレップ、SED、awkなどのツールの詳細、ファイル検索、テキスト操作のためにLinuxで正規表現(Regex)を使用する方法について説明します。

この記事では、Google Authenticatorを使用してLinux上のSSH用の2要素認証(2FA)のセットアップ、インストール、構成、およびトラブルシューティング手順の詳細に関するガイドを提供します。 Enhanced Secなど、2FAのセキュリティ利益を強調しています

この記事では、Linuxシステムのパフォーマンスを監視するためにTop、HTOP、およびVMSTATを使用して、効果的なシステム管理のための独自の機能とカスタマイズオプションを詳述することについて説明します。

この記事では、SelinuxとApparmor、Linuxカーネルセキュリティモジュールを比較して、必須のアクセス制御を提供します。 それは彼らの構成を詳述し、アプローチの違い(ポリシーベースとプロファイルベース)と潜在的なパフォーマンスへの影響を強調します

この記事では、Linuxシステムのバックアップと復元方法について詳しく説明しています。 フルシステムイメージのバックアップとインクリメンタルバックアップを比較し、最適なバックアップ戦略(規則性、複数の場所、バージョン、テスト、セキュリティ、回転)、およびDAについて説明します

この記事では、LinuxのSudo特権を管理する方法について説明します。重要な焦点は、 /etc /sudoersの安全性とアクセスを制限することです。

この記事では、FirewalldとIptablesを使用したLinuxファイアウォールの構成を比較します。 firewalldは、ゾーンとサービスを管理するためのユーザーフレンドリーなインターフェイスを提供しますが、iptablesはNetFilter FRAのコマンドライン操作を介して低レベルの制御を提供します

記事では、APT、Yum、およびDNFを使用してLinuxでソフトウェアパッケージの管理を行い、インストール、更新、および削除をカバーしています。さまざまな分布に対する機能と適合性を比較します。
