Docker コンテナがホスト サービスにアクセスする

Docker ネットワーキングの概要

dockerインストール中にデフォルトで 3 つのネットワークが作成されますbridge(作成されたコンテナはデフォルトでこのネットワークに接続されます) none、、host

  • hostネットワークをホスト マシンと直接共有します。
  • bridgeネットワークの分離。仮想ブリッジ (通常は ) を介してdocker0ホストと通信します。
  • noneネットワーク機能を無効にします。

docker network lsネットワーク設定を表示でき、出力は次のようになります。

NETWORK ID     NAME             DRIVER    SCOPE
1363ad4ba2a5   bridge           bridge    local
715796504a13   host             host      local
723f2680cdad   none             null      local

コンテナ作成時のネットワーク初期化

Dockerコンテナを作成するときは、次の操作が実行されます。

  1. 仮想インターフェイスのペアを作成し、それぞれローカル ホストと新しいコンテナーに配置します。
  2. ローカル ホストはデフォルトまたは指定されたブリッジにブリッジされ、 ;docker0などの一意の名前が付けられます。veth65f9
  3. コンテナーの一方の端を新しいコンテナーに配置し、名前を変更しますeth0。このインターフェイスはコンテナーの名前空間でのみ表示されます。
  4. ブリッジの使用可能なアドレス セグメントからアイドル アドレスを取得し、それをコンテナの eth0 に割り当て、ブリッジ ネットワーク カードへのデフォルト ルートを構成しますveth65f9

これが完了すると、コンテナはeth0仮想ネットワーク カードを使用して他のコンテナや他のネットワークに接続できるようになります。

ホストIPを使用する

ホストモード

このモードでは、コンテナを使用してホスト127.0.0.1に直接アクセスできます。localhost

dockerin を使用してコンテナーのネットワーク--network hostを構成します。host

docker run --network host host-main

docker-compose以下を構成するために使用しますnetwork_mode: "host"

version: "3"
    
services:
  main:
    build:
      context: .
      dockerfile: ./dockerfile
    network_mode: "host"

ブリッジモード

Linux

代わりにホストを使用できdocker0ますIPlocalhost

  1. クエリホストIP
ip addr show docker0
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:5a:02:53:f5 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:5aff:fe02:53f5/64 scope link 
       valid_lft forever preferred_lft forever

IPホスト マシンの[はい]を見つけて172.17.0.1、アドレスを にhttp://localhost:4780変更するhttp://172.17.0.1:4780と、アクセスできるようになります。

ウィンドウズ

同様に、Windows仮想ネットワーク カードを見つけて、IPそれを交換するかどうかを確認することもできます。
ここに画像の説明を挿入します

http://localhost:4780=>http://192.168.236.129:4780

Windowsホストは、host.docker.internalこの特別な名前を通じて解決することもできますマッピング、ファイルの内容は次のとおりです。DNSIPhostsC:\Windows\System32\drivers\etc\hosts
ここに画像の説明を挿入します

http://localhost:4780=>http://host.docker.internal:4780

参考

公式サイト
Dockerネットワーク
Dockerネットワークの詳しい説明 - 原理
Dockerコンテナがホストネットワークにアクセス

おすすめ

転載: blog.csdn.net/DisMisPres/article/details/127279708
おすすめ