docker container port mapping问题

时间:2015-12-06 19:33:55

标签: django docker docker-machine

我认为我错过了一些明显的东西,但我似乎无法解决这个问题。我试图将一个端口从运行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 

所以对此有何看法?一切都应该按照我理解的码头工作。

由于 克雷格

1 个答案:

答案 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