docker - Docker 容器将 localhost 从 127.0.0.1 重新映射到我计算机的 IP 地址
问题描述
我在 8000 端口上在后台运行 Docker 容器。我还在 8000 端口上运行 Django 应用程序。奇怪的是,两者都工作 - 我可以访问 Docker 应用程序localhost:8000
和 Django 应用程序127.0.0.1:8000
。
我做了一些挖掘,我相信 Docker 以某种方式重新映射 localhost 以指向我计算机的 IP 地址,而不是指向127.0.0.1
. 这已得到确认,因为我网络上的其他设备可以通过 访问我计算机上的 Docker 应用程序ip_address:8000
,并且当我杀死容器时,localhost:8000
恢复为我的 Django 应用程序提供服务。
我的问题是,码头工人是如何做到这一点的,为什么?
更多信息:
- 运行
docker ps
显示出0.0.0.0:8000->8000/tcp
预期的端口映射,我相信这只是意味着我的计算机的端口 8000 映射到了容器的 8000。 - 我的
/etc/hosts
或/private/etc/hosts
文件中没有任何内容可以解释这种行为。 - 当我的 wifi 开启时,两者都
localhost:8000
为ip_address:8000
容器提供服务,但是当我断开互联网连接时,ip_address:8000
停止为容器提供服务。如果 Docker 重新映射 localhost --> 设备 IP 地址,是否也不会localhost:8000
停止工作?
任何解释将不胜感激。
解决方案
推荐阅读
- r - NLS 函数 - 迭代次数超过最大值
- c# - 值不能为空。参数名称:在洋葱架构师上更改 asp.net 身份密钥后的连接字符串
- javascript - 在 Axios.get promise 之后设置 req.body
- spring-boot - 从镶木地板文件中读取弹簧批处理
- python-3.x - 如何交换字符串并保存
- ms-access - 转到连续子表单中的下一条记录 跳到父表单中的下一条记录
- python - 在 matplotlib 中迭代地添加子图,总数未知
- java - 使用 https 使用不同的 web 服务但只有一个使用证书身份验证后的 Axis2 问题
- android - StackView 小部件未显示
- javascript - 嵌套承诺解决方法