首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定停靠容器回送到主机回送。

问绑定停靠容器回送到主机回送。
EN

Stack Overflow用户
提问于 2018-06-21 19:39:21
回答 2查看 9.4K关注 0票数 4

我将提取一个码头映像(将以python 3为例)

代码语言:javascript
复制
docker pull python:3.6

然后我启动一个码头集装箱

代码语言:javascript
复制
docker run -it -p 127.0.0.1:8000:8000 python:3.6 bash

(请注意,在这里,127.0.0.1中的127.0.0.1:8000:8000允许指定目的地,主机IP,而不是源)

因此,如果我在容器内以0.0.0.0启动服务器:

代码语言:javascript
复制
python -m http.server 8000 --bind 0.0.0.0

然后,通过访问主机上的http://127.0.0.1:8000,我可以从主机访问容器的服务器,而不会出现任何问题。

但是,如果我的停靠服务器绑定到127.0.0.1,而不是0.0.0.0:

代码语言:javascript
复制
python -m http.server 8000 --bind 127.0.0.1

然后从主机访问http://127.0.0.1:8000不起作用。

将容器的回送127.0.0.1绑定到主机回送的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-21 19:57:31

将容器的回送127.0.0.1绑定到主机回送的正确方法是什么?

你不能这么做。容器中的loopback接口意味着“只有这个容器”,就像主机上的意思是“只有这个主机”。如果一个服务绑定到127.0.0.1,那么就没有办法--从您的主机或从另一个容器--到达该服务。

做你想做的事的唯一方法是:

  • 修改应用程序配置以侦听所有接口(特别是eth0 ),或
  • 在容器中运行一个代理,该代理绑定到所有接口,并将连接转发到localhost地址。
票数 5
EN

Stack Overflow用户

发布于 2019-08-09 01:43:46

将容器的回送127.0.0.1绑定到主机回送的正确方法是什么?

在Linux上,可以通过配置Docker容器来使用主机网络命名空间,即:

代码语言:javascript
复制
docker run --network=host

这只在Linux上工作,因为在Linux上,您的机器是主机,容器作为容器在您的机器操作系统中运行。在Windows/OSX上,Docker主机作为虚拟机运行,容器在虚拟机中运行,因此它们无法共享计算机网络命名空间。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50976362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档