Docker-Windows 上的机器端口转发不工作

Docker-machine Port Forwarding on Windows not working

我正试图在 windows 机器上的 Docker 内访问我的 django 应用程序 运行ning。我正在使用 docker-机器。我已经研究了好几个小时了。

这是我的 Docker我的 Django 应用的文件:

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 以查看转发这些端口是否有效。这是配置:

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

这是我启动容器的命令:

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

我不知道为什么我无法连接到那个端口。当我 运行 docker-machine ls 时,它给我的 url 是 tcp://192.168.99.101:2376 ,当我去那里时,它给我某种文件,所以我知道 docker-机器在该端口上处于活动状态。

另外当我 运行 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

如有任何帮助,我们将不胜感激。

问题是服务器在 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"]

现在可以使用了。