在我目前的工作中,我们使用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 create
和 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访问它时,我会收到错误信息:curl: (7) Failed to connect to localhost port 80: Connection refused
我尝试使用端口81运行容器,一切正常。
端口确实已经绑定到了docker。
22:47 $ sudo lsof -i -n -P | grep TCP
...
com.docke 14718 schovi 38u IPv4 0x6e9c93c51ec4b617 0t0 TCP *:80 (LISTEN)
...
我的osx防火墙已经关闭,我没有其他的安全措施。
sudo lsof -iTCP -sTCP:LISTEN -Pnl | grep 80
命令进行确认。 - Bernard