2016-10-30 2 views
0

私はDockerを使い始めていて、これまでのところは少し混乱しています。 these containersを実行しても問題ありません。Windows上でのドッカーネットワークの混乱

docker network inspect dockersymfony_defaultは、nginxコンテナのIPアドレスが172.19.0.5であることを示します。私は他の容器ネットワーク(PHP、DB、...)からこのIPでnginxにアクセスできます。

ただし、ホストマシン(Windows)のnginxコンテナからは172.19.0.5でアクセスできません。一方、nginxは127.0.0.1またはlocalhostでアクセスできます。

[ 
{ 
    "Name": "dockersymfony_default", 
    "Id": "12b4f5a663450bb44e87f9635860bbcede354f2fea27f93b056d7159251dc465", 
    "Scope": "local", 
    "Driver": "bridge", 
    "EnableIPv6": false, 
    "IPAM": { 
     "Driver": "default", 
     "Options": null, 
     "Config": [ 
      { 
       "Subnet": "172.19.0.0/16", 
       "Gateway": "172.19.0.1" 
      } 
     ] 
    }, 
    "Internal": false, 
    "Containers": { 
     "1eef50ee350782654bb96e7d16d09e3b9fe54abca97cc339a89791083e08563c": { 
      "Name": "dockersymfony_db_1", 
      "EndpointID": "8b48ea4934a01703ac23a7f27f8cee0ff9226b7b5401550859b22fbf17a4c10a", 
      "MacAddress": "02:42:ac:13:00:03", 
      "IPv4Address": "172.19.0.3/16", 
      "IPv6Address": "" 
     }, 
     "1faf199dd6285c6700640b570fd842212962c299d762c531b011205f58598102": { 
      "Name": "dockersymfony_nginx_1", 
      "EndpointID": "a9be2a542565262d31c93f7d1960a13e373f5a701c299cedf3dc0510c8de9bf4", 
      "MacAddress": "02:42:ac:13:00:05", 
      "IPv4Address": "172.19.0.5/16", 
      "IPv6Address": "" 
     }, 
     "2c2b994c92895e7a83c189d1e5002d2eb7d88f62761f8c324f00ffdece4efb4a": { 
      "Name": "dockersymfony_php_1", 
      "EndpointID": "98a0ad7bef2f2c963c68561bb2b56bc0feb113c390a29c0dd9aefd6e32b7e5be", 
      "MacAddress": "02:42:ac:13:00:04", 
      "IPv4Address": "172.19.0.4/16", 
      "IPv6Address": "" 
     }, 
     "65ee8088e6bc2405b80c56ae21d83a4f4f7fff252a7e782c4046629d670f7b74": { 
      "Name": "dockersymfony_redis_1", 
      "EndpointID": "80fcd76b2fe0326be8d30abaffe2310ef58f23935f0f67f7476fa4fad951cba6", 
      "MacAddress": "02:42:ac:13:00:02", 
      "IPv4Address": "172.19.0.2/16", 
      "IPv6Address": "" 
     }, 
     "86665f35aa1599028d8e91aa45f86505a112b44496386e674b7039458dcda45f": { 
      "Name": "dockersymfony_elk_1", 
      "EndpointID": "c82ef8cc18f1cc345e97c3bdd0e04f0bf398efc0c38f9876b0e922a1e6dd494c", 
      "MacAddress": "02:42:ac:13:00:06", 
      "IPv4Address": "172.19.0.6/16", 
      "IPv6Address": "" 
     } 
    }, 
    "Options": {}, 
    "Labels": {} 
} 
] 

なぜですか?

私は、この問題が別のものの原因であると考えます.xdebugは機能しません。

答えて

0

リンクしたプロジェクトのコンテナはLinuxコンテナです。 Windows上のDockerは、Hyper-Vを使用して作成したLinux VM内のLinuxコンテナを実行します。プロジェクト内のdocker-composeファイルを使用してこれらのコンテナを開始したと仮定すると、それらはすべてdefault bridge networkにアタッチされます。私は便利docker0ブリッジのthis descriptionを見つけ

デフォルトでは、ドッカーサーバが作成し、前後に他の物理または仮想ネットワークインタフェース間でパケットを渡すことができ、Linuxカーネル内のイーサネットブリッジとしてホストシステムのdocker0インターフェイスを設定します単一のイーサネットネットワークとして動作します。

コンテナはすべて同じネットワークに接続されているため、すべてがIPアドレスで相互にアクセスできます。 Docker for Windowsが作成するVMに接続できた場合は、IPアドレスでもこれらのコンテナにアクセスできます。

nginxのコンテナは、ポートバインディングのためにlocalhostおよび127.0.0.1からアクセスできます。あなたはpublish(ドッカ - コンファイルがthis line上で行うように)、Windows用ドッカーは、あなたのコンテナを実行しているVMに転送され、そのポートで行われ、いくつかの魔法とリクエストをしているVMその後、前方の容器とを作成した場合nginxを実行しているコンテナへのリクエストは、リクエストに応答し、ブラウザでレスポンスが表示されます。


1.実際に魔法ではありません