Py学习  »  docker

在不使用IP的情况下从主机与docker内的服务通信

Musmus • 5 年前 • 1533 次点击  

我有一个进程在一个主机上运行,需要和一个docker通信,我希望这个进程通过一些参数来完成,这些参数不能改变(比如docker name或者host name),不像IP(不希望docker的IP是静态的,或者为此安装外部docker)。

我知道dockers可以在私有网络中按名称解析收件人,这是我想要的,但不是dockers之间,而是主机上运行的进程和docker之间。

找不到解决办法,可以吗?

编辑:

出于安全原因,我不允许使用主机网络并在主机上打开其他端口。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51586
文章 [ 1 ]  |  最新文章 5 年前
grapes
Reply   •   1 楼
grapes    6 年前

欢迎您选择更适合您需要的方式。

选择1。使用主机的网络。在这种情况下,Docker不会为container创建单独的网络,而您可以连接到container的服务,就像它们将在您的主机上运行一样:

docker run --network=host <image_name>

这种方法的缺点是隔离度低,因而安全。您不需要在这里公开任何端口-如果服务监听 8080 ,打开 localhost:8080 好好享受吧。

第二种方法更为正确——在容器中公开(以某种方式转发)内部端口,并将它们映射到主机中的端口。

docker run -p 8080:80 <image_name>

这将映射端口 80 从集装箱到港口 8080个 在主机上。与前面的示例一样,仍然使用 localhost ,例如。 本地主机:8080 .