当前位置:   article > 正文

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

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地址(即桥接网络的网关地址)来访问宿主机上的服务或应用程序。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/340383
推荐阅读
相关标签
  

闽ICP备14008679号