2016-10-30 2 views
0

나는 Docker를 처음 사용하고 있으며, 지금까지 다소 혼란 스럽다. these containers을 실행했는데 제대로 작동합니다.Windows의 혼다 네트워킹 IP 혼동

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을 발견

기본적으로 도커 서버가 만들고 앞뒤로 다른 물리적 또는 가상 네트워크 인터페이스 사이의 패킷을 전달할 수 있습니다 리눅스 커널 내부 이더넷 브리지로 호스트 시스템의 docker0 인터페이스를 구성합니다 단일 이더넷 네트워크로 작동합니다.

컨테이너는 모두 동일한 네트워크에 연결되므로 모두 IP 주소로 서로 액세스 할 수 있습니다. Docker for Windows에서 생성 한 VM에 연결할 수 있다면 IP 주소를 사용하여 해당 컨테이너에 액세스 할 수 있습니다.

nginx 컨테이너는 포트 바인딩 때문에 localhost127.0.0.1에서 액세스 할 수 있습니다. 컨테이너를 만들 때 publish(도커 작성 파일이 일 때) 일 때 Docker는 Windows 용 Docker를 사용하여 마법 을 생성하고 해당 포트에서 요청한 내용이 컨테이너를 실행중인 VM으로 전달 된 후 VM이 전달합니다 nginx를 실행하는 컨테이너에 대한 요청은 요청에 응답하고 브라우저에서 응답을 보게됩니다.


1. 실제로 마법하지