10

我的系统上运行了一个 docker 容器,我开始使用以下命令:

docker run -it  -v ~/some/dir -p 8000:80  3cce3211b735 bash

现在 docker ps 列出了这个:

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                             NAMES
44de7549d38e        3cce3211b735        "bash"              14 minutes ago      Up 14 minutes       22/tcp, 443/tcp, 8082/tcp, 0.0.0.0:8000->80/tcp   hardcore_engelbart

在容器内,我使用以下命令运行我的 django 应用程序:python manage.py runserver 80

但我无法查看使用这些中的任何一个的页面:

1.localhost:8000

2.127.0.0.1:8000

我明白我的 8000 端口映射到容器上的 80 端口。但是为什么我无法访问它。我正在使用 docker for mac 而不是 docker toolbox 。如果您需要更多信息,请提供帮助和评论。

4

1 回答 1

18

好的,所以我找到了解决问题的方法。问题不在 docker 端口映射中。实际问题是这一行:

python manage.py runserver 80

这在 127.0.0.1:80 上运行服务器。docker 容器内的本地主机不是您机器上的本地主机。所以解决方案是使用以下命令运行服务器:

python manage.py runserver 0.0.0.0:80

在此之后我能够访问该网页。如果您遇到无法连接到 docker 容器内运行的 django 服务器的相同问题,您应该尝试在0.0.0.0:port. 您将能够在浏览器中使用localhost:port. 希望这可以帮助某人。

于 2017-05-21T07:18:50.323 回答