docker-machine:无法从主机访问容器的Web服务器
我刚刚在我的Mac上用Docker-Toolbox安装Docker,使用自制软件: 安装 Docker 和自制软件
在创build和configuration容器与Rails,Postgres和启动docker – 组成一切看起来不错,但我不能从主机访问Web服务器。
输出
$ docker-compose up dummy_1 | I, [2016-03-30T14:55:53.130639 #6] INFO -- : listening on addr=0.0.0.0:8000 fd=10
当我input谷歌浏览器的URL http://0.0.0.0:8000/我得到
This site can't be reached 0.0.0.0 refused to connect. ERR_CONNECTION_REFUSED
所以我试了
$ docker-machine env dummy
具有以下输出:
export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/choi/.docker/machine/machines/dummy" export DOCKER_MACHINE_NAME="dummy"
当我尝试在Chrome http://192.168.99.100:2376
我得到一个空白的文件下载。 为什么这样? 我期望我的Rails应用程序的默认问候语页面。
192.168.99.100
是您的Docker主机的IP,在这种情况下。 你需要暴露你的容器的端口,然后你将能够从外部世界连接到它。
我不熟悉Docker Compose,但是您发布的日志build议显示 8000端口。 因此,试试http://192.168.99.100:8000
。
(原因http://192.168.99.100:2376
不起作用是因为这是Docker守护进程本身的地址和端口,它不是基于HTTP的。至于0.0.0.0
:这是你的web地址服务器在容器内部侦听并等同于其中的所有外部连接,但没有任何端口暴露,就没有办法了!
在暴露端口后,您可以通过docker创build的内部IP地址访问Web应用程序。 您可以使用运行以下命令的容器名称来获取IP地址:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 'container name here'
假设你有IP 172.17.0.2
。 你可以open http://172.17.0.2:8000
对于那些尝试localhost:4000
作为教程说,但失败:
input这个
$ docker-machine env
并得到如此的结果
export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/choi/.docker/machine/machines/dummy" export DOCKER_MACHINE_NAME="dummy"
所以你得到的IP: 192.168.99.100
然后访问192.168.99.100:4000
,如ip:your_port
你可以find一个正确的地址来打电话给你的网页首先,通过以下方式findCONTAINER ID:
$ docker ps
你会得到这样的信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 56dd4d582b08 abc01 "python app.py" 10 minutes ago Up 11 minutes 80/tcp, 0.0.0.0:80->4000/tcp flamboyant_bell
现在你知道端口:4000.所以地址应该是这样的:
http://192.168.99.100:4000/
但是,您可以仔细检查:
$ docker port 56dd4d582b08
你会在这种情况下获得以下信息:
4000/tcp -> 0.0.0.0:80
现在你可以尝试看看你的项目
http://192.168.99.100:4000/