[英]Bind docker container loopback to the host loopback
我拉了一个docker映像(将以python 3为例)
docker pull python:3.6
然后我启动一个Docker容器
docker run -it -p 127.0.0.1:8000:8000 python:3.6 bash
(请注意,此处127.0.0.1:8000:8000中的127.0.0.1允许指定目标,主机IP,但不能指定源)
因此,如果我在容器中的0.0.0.0处启动服务器:
python -m http.server 8000 --bind 0.0.0.0
那么我可以从主机上访问http://127.0.0.1:8000来从主机访问容器的服务器而没有任何问题
但是,如果我的Docker服务器绑定到127.0.0.1而不是0.0.0.0:
python -m http.server 8000 --bind 127.0.0.1
那么无法从主机访问http://127.0.0.1:8000 。
将容器的环回127.0.0.1绑定到主机环回的正确方法是什么?
将容器的环回127.0.0.1绑定到主机环回的正确方法是什么?
你不能那样做。 容器内的loopback
接口表示“仅此容器”,就像在主机上表示“仅此主机”一样。 如果服务绑定到127.0.0.1
,则无法从主机或其他容器访问该服务。
做您想要的唯一方法是:
eth0
)上侦听,或 localhost
地址。 将容器的环回127.0.0.1绑定到主机环回的正确方法是什么?
在Linux上,这可以通过将Docker容器配置为使用主机网络名称空间来完成,即:
docker run --network=host
这仅在Linux上有效,因为在Linux上,您的计算机是主机,并且容器在计算机OS中作为容器运行。 在Windows / OSX上,Docker主机作为虚拟机运行,容器在虚拟机中运行,因此它们无法共享您的计算机的网络名称空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.