无法在本地Docker容器中查看运行的Django站点

3
我有一个Django应用程序需要部署在亚马逊的EC2容器服务上。与此同时,为了测试部署,我首先尝试在本地的Docker容器中部署它,但即使运行一个简单的Django演示应用程序,我也无法在localhost:8000上看到页面。
以下是我的设置。
创建一个Docker机器:
$ docker-machine create --driver virtualbox testmachine

之后我设置了我的环境:

$ eval "$(docker-machine env testmachine)"

我为我的测试容器设置了一个Dockerfile:

FROM ubuntu

RUN echo "deb http://archive.ubuntu.com/ubuntu/ $(lsb_release -sc) main universe" >> /etc/apt/sources.list

RUN apt-get update

RUN apt-get install python-pip -y

RUN pip install django

RUN mkdir django_test

RUN cd django_test && \
    django-admin.py startproject django_test .

然后我调用

$ docker build -t dockertest .
... builds successfully
$ docker run -d -i -t -p 8000:8000 dockertest
cbef144ac068eb61b0c3e032448cc207c8f0384a9a67a710df6d9beb26d2ab32
$ docker attach cbef144ac068eb61b0c3e032448cc207c8f0384a9a67a710df6d9beb26d2ab32

root@cbef144ac068:/# cd django_test
root@cbef144ac068::/django_test# python manage.py runserver 0.0.0.0:8000

这成功地在容器中启动了服务器,地址为0.0.0.0:8000/。

但是,当我尝试在浏览器中访问localhost:8000时,出现了“此网页不可用”的问题。我错过了什么?


对我来说,这个问题通过 https://stackoverflow.com/questions/40849000/connection-refused-by-docker-container 得到了解决。 - Big Pumpkin
对我来说,这个问题通过 https://stackoverflow.com/questions/40849000/connection-refused-by-docker-container 得到了解决。 - Big Pumpkin
1个回答

0
原来我看错了IP地址。
为了找到正确的IP地址,我运行了以下命令:
$ docker-machine ls
NAME          ACTIVE   DRIVER       STATE     URL                         SWARM
testmachine   *        virtualbox   Running   tcp://192.168.99.100:2376

然后我在浏览器中加载了192.168.99.100:8000,它像魔法一样运行。


1
对于那些没有使用docker-machine的人,您可以使用以下命令获取容器的真实IP地址:docker inspect --format '{{ .NetworkSettings.IPAddress }}' CONTAINER_ID - mainframer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接