繁体   English   中英

将Docker容器环回绑定到主机环回

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM