在Windows上的Docker-machine端口转发不起作用
我试图访问我的Windows机器上运行在Docker中的Django应用程序。 我正在使用docker机器。 我已经在这个几个小时了解了这个。
这是我的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"]
所以这应该暴露(至less在容器中)端口8000。
当我使用命令docker-machine ip default
我给了IP 192.168.99.101。 我去端口8000上的IP,但没有得到任何回应。
我进入VirtualBox查看是否转发这些端口将工作。 这是configuration:
我也尝试使用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-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
任何帮助将不胜感激。
问题是服务器在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"]
现在它工作。