Как подключиться к контейнеру, расположенному в Docker Toolbox?
Я пытаюсь запустить мой веб-API ASP.NET Core 1.1 в контейнере Docker, но не могу подключиться к веб-API из браузера или curl
, Для устранения неполадок я также поднял стандартные контейнеры nginx и Apache httpd и не могу подключиться к ним, поэтому я считаю, что это проблема Docker/Docker Toolbox/ конфигурации, а не проблема с моим приложением.
Я сосредоточусь на том, что я сделал с nginx и Apache:
Я использую Docker Toolbox на Windows 7 Professional, и все, кажется, работает так, как я ожидал.
- Все команды Docker работают как положено
- Я могу получить доступ к базовой файловой системе Windows
- Я могу получить ожидаемые результаты от
curl http://localhost
(если я запускаю веб-сайт IIS по умолчанию в Windows 7)
Итак, теперь я закрыл IIS и запустил nginx в контейнере:
$ docker run -d -p 80:80 nginx
45bb1f373c11b820d8431de3eb3bf222d57d412de53e8625f461b62c4279e644
Docker теперь показывает запущенный nginx:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
45bb1f373c11 nginx "nginx -g 'daemon off" 47 seconds ago Up 48 seconds 0.0.0.0:80->80/tcp, 443/tcp admiring_pike
Но я не могу связаться ни с curl
(в командной строке Docker Toolbox) или веб-браузер в Windows:
$ curl http://localhost
curl: (7) Failed to connect to localhost port 80: Connection refused
Я получаю точно такие же результаты, если я запускаю контейнер Apache 2.4 (httpd).
Есть идеи? Спасибо! Питер
2 ответа
Я нашел ответ в другом вопросе здесь.
Поскольку Docker Toolbox работает на облегченной виртуальной машине Linux, он имеет собственный IP-адрес. Нужно либо на карту localhost
на ВМ с помощью DOCKER_HOST
Доступ к виртуальной машине осуществляется через ее IP-адрес, который можно найти с помощью команды:
docker-machine ip default
Поскольку вы работаете на ВМ, вы должны следовать этому докер-документу отсюда.
После этого выполните следующую команду, чтобы проверить IP-адрес вашей виртуальной машины.
docker-machine ip default
Запустите nginx и нажмите [IP-адрес по умолчанию]: порт в браузере. Оно работает!