在我目前的工作中,我们有使用docker-compose制作的开发环境.
一个容器是Nginx,它提供到其他容器的路由.
一切似乎都很好,并在Windows和osx上与我的同事一起工作.但是在我的系统(osx El Capitan)上,访问端口80上的Nginx容器存在问题.
有来自docker-compose.yml的容器设置
Nginx:
build: ./dockerbuild/Nginx
ports:
- 80:80
links:
- PHP
volumes_from:
- app
... and more
在./dockerbuild/Nginx中没有什么特别的,只有Nginx配置,因为我们从任何地方都知道它.
当我使用docker-compose运行每一个创建和docker-compose start时.然后docker ps给我
3b296c1e4775 docker_Nginx "Nginx -g 'daemon off" About an hour ago Up 47 minutes 0.0.0.0:80->80/tcp,443/tcp docker_Nginx_1
但是当我尝试通过卷曲访问它时,我得到错误. curl:(7)无法连接到localhost端口80:连接被拒绝
我尝试用端口81运行容器,一切正常.
港口真的是绑定到码头
22:47 $sudo lsof -i -n -P | grep TCP
...
com.docke 14718 schovi 38u IPv4 0x6e9c93c51ec4b617 0t0 TCP *:80 (LISTEN)
...
osx中的防火墙已关闭,我没有其他安全措施.
最佳答案
如果你使用docker-for-mac:
原文链接:https://www.f2er.com/nginx/434350.html通过localhost访问:80是正确的,但您仍然必须确保没有运行本地apache / Nginx服务.通常来自Boxen / homebrew的剩余物存在绑定该端口,因为那是开发人员当时所做的:)
如果你使用dockertoolBox / virtualBox /无论管理程序
您将无法通过本地主机,通过docker-machine ip访问它,因此请在您的浏览器中使用docker-machine ip default并使用http:// $ip:80
如果这没有帮助
确保你的Nginx容器确实有效,所以连接到容器:docker exec -i -t< containerid>庆典
然后运行ps aux Nginx或者如果安装了telnet,请尝试连接到localhost