我在boot2docker 1.3.1下运行.
我有一个运行Web服务器的Docker容器uwsgi --http :8080
.
如果我附加到容器,我可以使用浏览网站,lynx http://127.0.0.1:8080
所以我知道服务器正在运行.
我运行我的容器:
$ docker run -itP --expose 8080 uwsgi_app:0.2
它有以下细节:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5248ad86596d uwsgi_app:0.2 "bash" 11 minutes ago Up 11 minutes 0.0.0.0:49159->8080/tcp cocky_hypatia $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' 5248ad86596d 172.17.0.107
我以为我可以通过访问来自我的主机访问该网站http://172.17.0.107:49159
.
这不起作用.我只是在Chrome中看到"连接......",无处可去.
我究竟做错了什么?
要查找容器的IP地址,您不需要额外安装:
docker inspect <container>
这提供了丰富的信息.grep
它用于IP地址.
好的,愚蠢的我,我在boot2docker的文档中找到了答案 https://docs.docker.com/installation/mac/#container-port-redirection
我需要使用boot2docker vm的ip地址,而不是容器的ip,即
$ boot2docker ip 192.168.59.103
我可以从主机上浏览我的网站 http://192.168.59.103:49159/
我不需要route
在主机上添加任何内容
扩展Anentropic的 答案: boot2docker
是Mac和Windows的旧应用程序,docker-machine
是新的应用程序 .
首先,列出你的机器:
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM default * virtualbox Running tcp://192.168.99.100:2376
然后选择其中一台机器(默认调用一台机器default
)和:
$ docker-machine ip default 192.168.99.100