Docker コンテナ間の相互接続と通信には 3 つの方法があります。
1. Docker内部ネットワーク Docker 独自のネットワーク スタックが関係します。 Docker をインストールすると、システムはコンテナとホストを接続するために使用される docker0 という新しいネットワーク インターフェイスを作成します。IP 範囲は 172.16 ~ 172.30 です。 各 Docker コンテナには、このインターフェース上の IP アドレスが割り当てられます。 Docker がコンテナを作成するたびに、相互接続されたネットワーク インターフェースのセットが作成されます。一方の端はコンテナ内の eth0 インターフェースで、もう一方の端はホスト上で veth で始まる名前が付けられます。 各 veth インターフェースを docker0 ブリッジにバインドすることにより、Docker はホストとすべての Docker コンテナによって共有される仮想サブネットを作成します。 コンテナとホスト間の通信接続を実現します。veth インターフェースはコンテナが実行中のときのみ存在することに注意してください。 内部ネットワークを使用して相互接続を実現する場合の欠点:
2. Dockerネットワーク コンテナ間の接続はネットワークを使用して作成されます。 コンテナが相互に通信するための独自のネットワークをユーザーが作成できるようにします。 異なるホスト間で通信でき、ネットワーク構成がより柔軟になります。 接続を更新せずにコンテナを停止、起動、または再起動できます。 事前にコンテナを作成して接続する必要はなく、コンテナの実行順序を気にする必要もありません。ネットワーク内でコンテナの名前解決と検出が可能です。 docker compose および swarm と統合されています。 docker ネットワーク内で起動されたコンテナは、このネットワーク内で実行されているすべてのコンテナを認識します。 これらのコンテナのアドレスを/etc/hostsファイルを通じてローカルDNSに保存します。 コンテナが再起動されると、その IP アドレスは /etc/hosts ファイル内で自動的に更新されます。 テスト中に、/etc/hosts ファイルには他のコンテナの新しいアドレスがないように見えましたが、相互に ping を実行できることが分かりました。 コンテナは複数のネットワークに同時に参加できるため、非常に複雑なネットワーク モデルを作成できます。
3. Dockerリンク コンテナの名前はリンク プロセス中に参照する必要があり、同じホスト マシン上でのみ機能します。 docker run でコンテナを起動するときに、--link パラメータを使用して 2 つのコンテナ間にクライアント サーバー リンクを作成します。 2 つのパラメータが必要です。1 つはリンク コンテナーの名前、もう 1 つはリンクのエイリアス (--link redis:db) です。 リンクされたコンテナーはサービスであり、リンクによりサービス コンテナーはクライアント コンテナーと通信できるようになります。 クライアント コンテナーはサービス コンテナーの任意のパブリック ポートに直接アクセスできるため、サービス コンテナーのポートをローカル ホストに公開する必要がなく、比較的安全です。 複数のクライアント コンテナーを同じサービス コンテナーにリンクすることも、--link を複数回指定して複数のサービス コンテナーにリンクすることもできます。 Docker は、コンテナの /etc/hosts ファイルと、リンク情報を含む環境変数にリンク情報を書き込みます。 どのようなアプローチを採用しても、次のコンポーネントを含む Web アプリケーション スタックを作成できます。
以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQLデータベースバックアップのさまざまな実装方法の概要
>>: Vue+Openlayer で select を使用して要素を選択する実装コード
多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...
GROUP BY ステートメントは、Aggregate 関数と組み合わせて使用され、1 つ以上の...
最近のブラウザでは、CSS 内で JavaScript を実行することはできなくなりました。以前は、...
目次コンポーネントの登録コンポーネントの追加ソースコードドラッグ可能なテキスト ボックスでは、ユーザ...
この記事の例では、JavaScriptで等速アニメーションを実装するための具体的なコードを参考までに...
この記事を読む前に、Linuxコマンド、特にcentos7.3環境でyumを使用してインストールされ...
MySQL を頻繁に使用する人は、次のような状況に遭遇する可能性があります。 1. フィールド タ...
この記事では、JavaScriptキャンバスでミラーイメージ効果を実現するための具体的なコードを参考...
学習目標: Windowsシステムを使用してMySQLデータベースをインストールする方法を学びます。...
この記事では、参考までにVue More Filter Itemウィジェットの実装方法を例として紹介...
この記事では、参考までに、カルーセル効果の具体的なコードをJavaScript+CSSを使用して実装...
[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...
方法 1: 設定ファイルを変更する (docker サービスを停止する必要があります) 1. doc...
関連記事: Win7 x64 に解凍版の mysql 5.7.18 winx64 をインストールする...
テーブル構造は次のとおりです。 id varchar(32) 情報JSONデータ: id = 1 i...