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 を使用して要素を選択する実装コード
この記事では、Vueを使用して虫眼鏡付きの検索ボックスを実装する方法を紹介します。具体的な内容は次の...
nginx の概要nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プ...
典型的なレイアウト例上の写真のように、正方形の真ん中に一定の隙間があり、その隙間は固定されています。...
シナリオ 1: サーバーの制限により、外部に開かれているポートは 1 つだけですが、別の外部ネットワ...
Vueのコントロール商品数量コンポーネントのカプセル化と使用は参考までに。具体的な内容は以下のとお...
背景プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェック...
この記事では、JavaScriptシミュレーション計算機の具体的なコードを参考までに紹介します。具体...
前回、私たちは 2 つのヘッダー レイアウト (フレックスボックス 1 つとフロート 1 つ) を考...
この記事は、Ubuntu 17.10 での Docker CE のインストールを記録するために使用さ...
成果を達成する要件/機能: CSS + HTML を使用してハートを描く方法。分析:正方形と 2 つ...
問題の説明今日、ページ スタイルを変更していたときに、子要素にmargin-top設定したのに、子要...
背景グループでは、CSS を使用してインセット コーナー ボタンを実装する方法や、矢印付きのボタンを...
1. ASP.NET Web アプリケーションのテンプレートとは何ですか? それらの違いは何ですか?...
要件は、製品の評価データを渡すことであり、ページには対応する星の数が表示されます。 1. 異なる評価...
序文MySQL では、複数テーブル結合クエリは非常に一般的な要件です。複数テーブルクエリを使用する場...