Отказано в соединении в контейнере 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