Windows上的Docker-machine端口转发无法正常工作

时间:2015-12-08 00:21:31

标签: docker virtualbox

我试图在我的Windows机器上访问我在Docker中运行的django应用程序。我使用的是docker-machine。我现在已经花了好几个小时了。

这是我的django应用程序的Dockerfile:

FROM python:3.4-slim

RUN apt-get update && apt-get install -y \
        gcc \
        gettext \
        vim \
        curl \
        postgresql-client libpq-dev \
    --no-install-recommends && rm -rf /var/lib/apt/lists/*

EXPOSE 8000
WORKDIR /home/
# add app files from git repo
ADD . server/
WORKDIR /home/server
RUN pip install -r requirements.txt
CMD ["python", "manage.py", "runserver", "8000"]

因此应该暴露(至少在容器中)端口8000。

当我使用命令docker-machine ip default时,我获得了IP 192.168.99.101。我在端口8000上访问该IP但没有得到响应。

我进入VirtualBox看看转发这些端口是否有效。这是配置:

VirtualBox port forwarding config

我也尝试使用127.0.0.1作为主机IP。我也试过禁用Windows防火墙。

这是我启动容器的命令:

docker run --rm -it -p 8000:8000 <imagename>

我不知道为什么我无法连接该端口。当我运行docker-machine ls它给我的网址是tcp://192.168.99.101:2376时,当我转到它时它会给我一些文件,所以我知道这个端口上的docker-machine是活动的。

当我运行docker ps时,我得到了这个:

CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
5c00cc28a2bd        <image name>         "python manage.py run"   7 minutes ago       Up 7 minutes        0.0.0.0:8000->8000/tcp   drunk_knuth

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题是服务器在127.0.0.1上运行时应该在0.0.0.0上运行。

我从

更改了Dockerfile中的CMD

CMD ["python", "manage.py", "runserver", "8000"]

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

它现在有效。