ホームページ 運用・保守 Linuxの運用と保守 Docker と Linux: コンテナ間のネットワーク通信を実装するにはどうすればよいですか?

Docker と Linux: コンテナ間のネットワーク通信を実装するにはどうすればよいですか?

Jul 28, 2023 pm 11:38 PM
docker networking container communication linux bridge

Docker と Linux: コンテナ間のネットワーク通信を実装するにはどうすればよいですか?

はじめに:
コンテナ テクノロジーは、最新のアプリケーションの開発と展開において重要な役割を果たします。コンテナーテクノロジーを使用すると、アプリケーションとその依存関係を独立したコンテナーにパッケージ化できるため、アプリケーションの移植性と一貫性が確保されます。ただし、複数のコンテナを接続してネットワーク通信を可能にする必要がある場合、コンテナ間のネットワーク通信の構成が非常に重要になります。この記事では、Docker 環境と Linux 環境でコンテナ間のネットワーク通信を実装する方法を紹介します。

  1. Docker のネットワーク モード
    Docker は、コンテナー ネットワーク通信をサポートするために、次の 4 つの異なるネットワーク モードを提供します。
  2. ブリッジ モード (ブリッジ): デフォルト モード、コンテナーは接続されています。仮想ブリッジを介してホスト ネットワークに接続します。
  3. ホスト モード (ホスト): コンテナーは、ネットワークを分離せずにホスト ネットワークを直接使用します。
  4. none モード: コンテナにはネットワーク インターフェイスがなく、外部ネットワークから完全に分離されています。
  5. コンテナ モード (コンテナ): コンテナはネットワーク名前空間を共有し、他のコンテナに直接アクセスできます。
  6. コンテナ間のネットワーク通信の例
    次に、簡単な例を使用して、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

パターンマッチングにLinuxで正規表現(正規表現)を使用するにはどうすればよいですか? パターンマッチングにLinuxで正規表現(正規表現)を使用するにはどうすればよいですか? Mar 17, 2025 pm 05:25 PM

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

LinuxでSSHに2要素認証(2FA)を実装するにはどうすればよいですか? LinuxでSSHに2要素認証(2FA)を実装するにはどうすればよいですか? Mar 17, 2025 pm 05:31 PM

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

TOP、HTOP、VMSTATなどのツールを使用してLinuxのシステムパフォーマンスを監視するにはどうすればよいですか? TOP、HTOP、VMSTATなどのツールを使用してLinuxのシステムパフォーマンスを監視するにはどうすればよいですか? Mar 17, 2025 pm 05:28 PM

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

Linuxのセキュリティを強化するようにSelinuxまたはApparmorを構成するにはどうすればよいですか? Linuxのセキュリティを強化するようにSelinuxまたはApparmorを構成するにはどうすればよいですか? Mar 12, 2025 pm 06:59 PM

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

Linuxシステムをバックアップして復元するにはどうすればよいですか? Linuxシステムをバックアップして復元するにはどうすればよいですか? Mar 12, 2025 pm 07:01 PM

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

sudoを使用して、Linuxのユーザーに高い特権を付与するにはどうすればよいですか? sudoを使用して、Linuxのユーザーに高い特権を付与するにはどうすればよいですか? Mar 17, 2025 pm 05:32 PM

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

FirewalldまたはIptablesを使用してLinuxでファイアウォールをセットアップするにはどうすればよいですか? FirewalldまたはIptablesを使用してLinuxでファイアウォールをセットアップするにはどうすればよいですか? Mar 12, 2025 pm 06:58 PM

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

パッケージマネージャー(apt、yum、dnf)を使用してLinuxのソフトウェアパッケージを管理するにはどうすればよいですか? パッケージマネージャー(apt、yum、dnf)を使用してLinuxのソフトウェアパッケージを管理するにはどうすればよいですか? Mar 17, 2025 pm 05:26 PM

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

See all articles