我认为我错过了一些明显的东西,但我似乎无法解决这个问题。我试图将一个端口从运行uwsgi的django应用程序映射到docker容器到我的本地Macintosh主机。这是设置。
Mac 10.11运行docker-machine 0.5.1 with virtualbox 5.0.10和docker 1.9.1
我创建了一个带有docker-machine设置我的docker文件的服务器,并成功构建了我的docker容器。在容器中我有以下命令
# Port to expose
EXPOSE 8000
映射到容器内通过uwsgi使用的端口。当我通过
来破坏他的容器时eval "$(docker-machine env dev)"
docker-machine ip dev
192.168.99.100
docker run -P launch
容器正常启动。如果我进入容器并执行
curl http://localhost:8000
我按照预期得到了我的HTML。在一个码头工人的外面检查container_id给我一个
"Ports": {
"8000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32768"
}
]
},
所以我可以看到从上面的命令到192.168.99.100的docker-machine主机上的32768的映射。但是每当我尝试卷曲http://192.168.99.100:32768
时curl http://192.168.99.100:32768
curl: (7) Failed to connect to 192.168.99.100 port 32768: Connection refused
所以对此有何看法?一切都应该按照我理解的码头工作。
由于 克雷格
答案 0 :(得分:0)
由于您正在运行VirtualBox VM,我仍然建议在VirtualBox级别上映射端口,正如我在“How to connect mysql workbench to running mysql inside docker?”中提到的那样
VBoxManage controlvm "boot2docker-vm" --natpf1 "tcp-port8000 ,tcp,,8000,,8000"
VBoxManage controlvm "boot2docker-vm" --natpf1 "udp-port8000 ,udp,,8000,,8000"
使用显式端口映射(而不是随机-P)
运行容器docker run -p 8000:8000 launch