0


docker 容器无法通过 IP 访问宿主机

问题:

一次部署项目过程中,将Java项目与中间件服务部署在同一远程机器上,出现连接不上中间件服务的问题,而项目在本地运行时是可以连接的,没有问题。

原因:

这是因为项目与服务都是通过docker容器运行的,而docker 容器无法通过 IP 访问宿主机(貌似高版本解决了这个问题),所以导致部署到同一机器后出现问题

解决:

一、Docker社区有提过该问题已被解决,链接在这

二、也可以通过在容器运行时 加参数--net=host,这个命令让容器与宿主机共享网络命名空间,这样容器就可以直接使用宿主机的IP地址进行访问,但该方案局限性在于只能有一个容器使用--net=host参数。

三、若想同时运行多个容器并使它们可以通过IP访问宿主机,可以采用桥接网络模式,步骤如下:

1.创建Docker网络:
运行下面的命令来创建一个桥接网络:

docker network create --driver bridge mynetwork

这将创建一个名为

mynetwork

的桥接网络,用于连接宿主机和容器。

2.运行容器并指定网络:
在启动容器时,使用

--network

参数并指定之前创建的桥接网络:

docker run --network=mynetwork <image_name>
<image_name>

是你要运行的容器镜像的名称。运行该命令后,容器将与

mynetwork

网络连接。

3.在容器中访问宿主机:
在容器内部,可以使用宿主机的IP地址进行访问。宿主机的IP地址通常是桥接网络的网关地址。

运行下面的命令来查看桥接网络的网关地址:

docker network inspect mynetwork

在输出中,找到

"Gateway": "<gateway_ip>"

,记录下

<gateway_ip>

的值。

在容器内部,可以使用

<gateway_ip>

来访问宿主机上的服务或应用程序。

现在,你的容器应该能够通过桥接网络访问宿主机了。你可以在容器内部使用宿主机的IP地址(即桥接网络的网关地址)来访问宿主机上的服务或应用程序。

标签: docker

本文转载自: https://blog.csdn.net/shihan175/article/details/131058696
版权归原作者 悠点一寺 所有, 如有侵权,请联系我们删除。

“docker 容器无法通过 IP 访问宿主机”的评论:

还没有评论