Как подключиться к контейнеру, расположенному в 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-адрес по умолчанию]: порт в браузере. Оно работает!

Другие вопросы по тегам