Dockerコンテナ間の通信を実装する方法

Dockerコンテナ間の通信を実装する方法

シナリオ: laradock 開発環境 (php7.3+mysql5.7) がローカルに構築されています。laradock 環境を使用して同じ既存のプロジェクトを実行したいのですが、プロジェクト データは mysql5.6 docker コンテナーにあります。ここで、2 つのコンテナーを接続してデータのやり取りを実現する必要があります。

私はインターネット上で「docker コンテナ間の通信_docker でコンテナ間の通信を実現する方法」に関連する多くの情報を読み、最終的に docker を使用して新しいネットワークを作成し (-d bridge ネットワーク ドライバーは bridge)、両方のコンテナをネットワークに接続して、データのやり取りを実現することにしました。

方法は次のとおりです。

自分でネットワークを作る

[root@docker ~]# docker network create -d bridge my-bridge
01f3d92281d7dd6eaeabd77c95c62f0d33f8d45bd0e1bc7c7e1c3208526dfd2a

ネットワークを作成します。-d ブリッジ ネットワーク ドライバーはブリッジで、mybridge という名前です。

作成されたネットワークを表示します。

ここに画像の説明を挿入

コンテナを起動し、自分で構築したネットワークmy-bridgeを使用する

[root@docker ~]# docker run -d --name test3 --network my-bridge cgy/mycentos:v2 /bin/bash -c "while true;do sleep 3600;done"

44d549f38e2a38d528d26193c5585f8c68008411d764ad39d23dc57ee48ab28c

–network my-bridge: コンテナが使用するネットワークが独自に構築した my-bridge であることを指定します。

コンテナは独自に構築したネットワークを使用して起動しました。IPは172.18.0.2です。

ここに画像の説明を挿入

別のコンテナ test4 を起動し、ネットワークを指定するために –network を使用せず、デフォルトで docker0 ネットワークを使用します。

[root@docker ~]# docker run -d --name test4 cgy/mycentos:v2 /bin/bash -c "while true;do sleep 3600;done"
c64c2993e94a3dc0359a0e38ed5f5d262c0b01be45bacdf1788c7b0c2223777b

コンテナ test3 と test4 が関連付けられていない場合、コンテナ名またはコンテナ IP のどちらが使用されているかに関係なく、ping は失敗します。

ここに画像の説明を挿入

自作のmy-bridgeにtest4を追加する

[root@docker ~]# docker ネットワーク接続 my-bridge test4

使用方法: docker network connect [オプション] ネットワークコンテナ

test4 を確認すると、もう 1 つの仮想ネットワーク カードがあり、それが test3 と同じネットワーク セグメント内にあることがわかります。

ここに画像の説明を挿入

この時点で、コンテナ名を直接使用して通信することができます

ここに画像の説明を挿入

my-bridgeの詳細情報を再確認する

[root@docker ~]# docker network で my-bridge を検査する
[
    {
        「名前」: 「my-bridge」、
        「ID」: 「01f3d92281d7dd6eaeabd77c95c62f0d33f8d45bd0e1bc7c7e1c3208526dfd2a」、
        「作成日」: 「2018-05-01T01:08:04.864178764+08:00」、
        「スコープ」:「ローカル」、
        「ドライバー」:「ブリッジ」、
        「IPv6を有効にする」:false、
        「IPAM」: {
            "ドライバー": "デフォルト",
            「オプション」: {},
            「設定」: [
                {
                    「サブネット」: 「172.18.0.0/16」、
                    「ゲートウェイ」: 「172.18.0.1」
                }
            ]
        },
        「内部」:偽、
        「接続可能」: false、
        「イングレス」:偽、
        "設定元": {
            「ネットワーク」: 「」
        },
        "ConfigOnly": false、
        「コンテナ」: {
            "44d549f38e2a38d528d26193c5585f8c68008411d764ad39d23dc57ee48ab28c": {
                "名前": "test3",
                "エンドポイントID": "95f13c730e08f7c82e5f3ec555f3c3afa79a50eceb7a1f540463ba181c81d05c",
                "Macアドレス": "02:42:ac:12:00:02",
                "IPv4アドレス": "172.18.0.2/16",
                "IPv6アドレス": ""
            },
            "c64c2993e94a3dc0359a0e38ed5f5d262c0b01be45bacdf1788c7b0c2223777b": {
                "名前": "test4",
                "エンドポイントID": "9b41a9ef9b3e6dabdaad52167642a74aa7e05f93ceec65768b311945c8f2c036",
                "Macアドレス": "02:42:ac:12:00:03",
                "IPv4アドレス": "172.18.0.3/16",
                "IPv6アドレス": ""
            }
        },
        「オプション」: {},
        「ラベル」: {}
    }
]

ご覧のとおり、my-bridge は 2 つのコンテナ test3 と test4 を接続しています。

参照: https://www.jianshu.com/p/a9dce5179e31

Dockerコンテナ間の通信の実装方法については以上です。Dockerコンテナの通信についてさらに詳しく知りたい方は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerコンテナ間の通信と外部ネットワーク通信の操作
  • Dockerコンテナの接続と通信の実装
  • Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明
  • Dockerコンテナのホスト間通信におけるダイレクトルーティングの詳細な説明
  • Dockerコンテナがホスト間で通信する方法の詳細な説明
  • Dockerコンテナ間の通信方法の詳細な説明

<<:  CSS3ダイヤモンドパズルはdivのみを回転し、背景画像は回転しない機能を実現します

>>:  MySQLで最大接続数を達成する方法

推薦する

mysql8.0.11クライアントがログインできない問題の解決方法

この記事では、mysql8.0.11クライアントがログインできない問題の解決策を紹介します。参考まで...

Tomcatc3p0 で jnid データ ソースを構成する 2 つの実装方法の分析

c3p0の使用c3p0jarパッケージをインポートする <!-- https://mvnrep...

CentOS8.1 で Gitlab サーバーを構築するための詳細なチュートリアル

Gitlab と Github の違いについては、あまり説明する必要はありません。一言でまとめると、...

docker windows10共有ディレクトリのマウント失敗の解決策

原因docker スクリプトを実行すると、コンテナを作成できないというエラーが発生します。以下のよう...

fullpage.js フルスクリーンスクロールの具体的な使い方

1.fullpage.js ダウンロードアドレスhttps://github.com/alvarot...

MySQL 8.0.17 winx64 (Navicat 付き) 手動構成バージョンのインストール チュートリアル図

1. ダウンロードアドレス: mysql-8.0.17-winx64ダウンロードして解凍する2. フ...

Dockerコンテナを介してランプアーキテクチャを構築するプロセス

目次1. Centosイメージを取得する2. nginxイメージをビルドする3. MySQLイメージ...

ウェブページのFOUC問題によるウェブページの混乱の解決策

FOUC は Flash of Unstyled Content の略で、FOUC と略されます。簡...

Ubuntu 16.04/18.04 に Pycharm と Ipython をインストールするチュートリアル

Ubuntu 18.04の場合1. sudo apt install python 。コマンドライン...

Workermanはmysql接続プールのサンプルコードを書きます

まず、接続プールを使用する理由と、接続プールによってどのような問題が解決できるかを理解する必要があり...

ワンクリックで雨や雪のエフェクトを実現する ThingJS パーティクルエフェクト

目次1. パーティクルエフェクト2. シーンを読み込む3. さまざまな粒子効果の実現エンディング: ...

Oracle の MySQL バージョンでユーザー Scott のテーブル ステートメントを作成する例

概要: Oracle scottユーザーには4つのテーブルがあり、実験やデータ検証に便利です。現在は...

Bootstrap 3.0 学習ノート グリッドシステム事例

序文前回の記事では、主にグリッドシステムの基本原理を学び、簡単なケースを通してその原理を実践しました...

インタビューの質問: ホーリー グレイル レイアウトとダブル ウィング レイアウトの違い

序文今日は、聖杯レイアウトとダブルウィングレイアウト、そしてそれらの違いについてお話しします。この2...

MySQL INT型の完全な分析

序文: Integer は MySQL で最もよく使用されるフィールド型の 1 つで、通常は整数を格...