Отказано в соединении в контейнере Dogin nginx

Я установил Docker Toolbox в OSX и следую простому руководству Docker по развертыванию Nginx.

Я выполнил docker run и подтвердил, что мой контейнер был создан:

docker run --name mynginx1 -P -d nginx
docker ps
40001fc50719  nginx  "nginx -g 'daemon off"  23 minutes ago  Up 23 minutes  0.0.0.0:32770->80/tcp, 0.0.0.0:32769->443/tcp  mynginx1

Однако, когда я curl http://localhost:32770Я получаю сообщение об ошибке:

curl: (7) Failed to connect to localhost port 32770: Connection refused

Я изо всех сил пытаюсь понять, что я мог здесь упустить. Есть ли дополнительный шаг, который мне нужно выполнить, учитывая то, что я нахожусь на OSX?

3 ответа

Решение

Проблема в том, что ваш DOCKER_HOST не установлен в localhost, вам нужно будет использовать IP-адрес вашего docker-машины, так как вы используете Docker Toolbox:

docker-machine ip default # должен вернуть ваш IP-адрес.

См. Docker Toolbox Docs для получения дополнительной информации.

docker-machine ip default
xxx.docker.machine.ip

затем

curl http://xxx.docker.machine.ip:32770

Если вы работаете в OS X 10.10.3 Yosemite или новее и используете Docker для Mac, у вас не будет проблем с докер-машиной или док-станцией или DOCKER_HOST.

Просто сопоставьте порт при запуске команды local-port:container-port

docker run --name my-web  -p 8080:80

В Mac для версий выше 10 вы можете попробовать использовать docker.for.mac.host.internal вместо localhost.

РЕДАКТИРОВАТЬ: docker.for.mac.host.internal устарел, они переключились на host.docker.internal. Ссылка: https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds

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