Docker-toolbox не может получить доступ к ВМ по IP - PullRequest
0 голосов
/ 24 сентября 2018

Я запускаю: docker run -p "9999:80" nginx и пытаюсь получить доступ к веб-серверу, используя следующий адрес: 172.17.0.2:9999.Я получил этот IP от docker inspect [container_id]:

 "NetworkSettings": {
    "Bridge": "",
    "SandboxID": "877eb750a0f35037f0b9dff2b6bd95f7dd4aaf80ae0ed8cf65e20ad8aeb85132",
    "HairpinMode": false,
    "LinkLocalIPv6Address": "",
    "LinkLocalIPv6PrefixLen": 0,
    "Ports": {
        "80/tcp": [
            {
                "HostIp": "0.0.0.0",
                "HostPort": "9999"
            }
        ]
            },
            "SandboxKey": "/var/run/docker/netns/877eb750a0f3",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "2599dc8c2311725e9816fc30e60a86550cb42887871a921365e3df866427464e",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "ffc037f862047b118824b8d322aab771ba75a009881959461be577ffebb42a80",
                    "EndpointID": "2599dc8c2311725e9816fc30e60a86550cb42887871a921365e3df866427464e",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }

Но это не работает, как ожидалось.Если я пинг 172.17.0.2 с хоста, я не получаю ответа.

Есть идеи, что не так?С docker-toolbox это так хлопотно, потому что моя версия Windows 10 не поддерживается докером.

1 Ответ

0 голосов
/ 24 сентября 2018

Поскольку вы запустили контейнер с docker run -p 9999:80, вы можете связаться с ним по IP-адресу виртуальной машины на общем порту 9999. docker-machine ip сообщит вам этот IP-адрес (но обычно это 192.168.99.100).Поэтому попробуйте http://192.168.99.100:9999/ в качестве URL-адреса для доступа к контейнеру.

Внутренние IP-адреса контейнера не особенно полезны.Одна существенная проблема с ними состоит в том, что они не могут быть достигнуты от других хостов.В случае среды Docker Toolbox все, что связано с Docker, фактически выполняется внутри виртуальной машины, и ваша хост-система считается для этого «другими хостами».Также обратите внимание, что если у вас есть возможность использовать его (или чаще использовать межконтейнерную DNS для одного контейнера, чтобы достигнуть другого по его docker run --name), вам нужен порт, который сервер прослушивает внутри контейнера, а не опубликованный порт:из другого контейнера вы можете использовать http://nginx_container_name:80/.

...