我的系统上运行了一个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
在容器内部,我使用命令python manage.py runserver 80
但是我无法使用以下任何一种方式查看页面:
1。localhost:8000
2。127.0.0.1:8000
我知道我的8000端口映射到容器上的80端口。但为什么我无法访问它。我使用docker for mac而不是docker工具箱。如果您需要更多信息,请提供帮助和评论。
答案 0 :(得分:13)
好的,所以我找到了解决问题的方法。该问题不在docker端口映射中。实际问题是这一行:
python manage.py runserver 80
这将在127.0.0.1:80上运行服务器。 docker容器中的localhost不是计算机上的localhost。所以解决方案是使用以下命令运行服务器:
python manage.py runserver 0.0.0.0:80
之后我能够访问该网页。如果遇到无法连接到docker容器内运行的django服务器的同一问题,则应尝试在0.0.0.0:port
上运行服务器。您可以使用localhost:port
在浏览器中访问它。希望这有助于某人。