我的情况如下:首先,我在centOS上运行一个MySQL容器( ip :172.17.0.2);然后,我在同一主机上使用指定的数据源(上面的MySQL )运行一个Nacos contanier,但我没有使用MySQL容器的ip,而是使用网桥网关的ip(172.17.0.1)(两个容器都链接到默认网桥)。
让我惊讶的是,Nacos运行得很好,它可以正常地从MySQL容器中查询配置数据。怎么会出这事?我看过一些文档,但并没有真正把answer.It搞糊涂。
发布于 2021-07-23 01:00:44
在现代Docker安装中,尽量避免使用默认网桥网络。docker network create
一个网络(它不需要任何特殊的选项,但是需要创建它),然后在--net
上启动你的容器。如果你使用Compose,它会为你创建一个名为default
的(“用户桥”)网络。
在您的CentOS主机上,如果运行ifconfig
,您应该会看到一个地址为172.17.0.1的docker0
接口。当您使用docker run -p
选项启动容器时,可以通过所有主机接口(包括docker0
接口)上的第一个端口号访问该容器。
同时,在容器内部(在默认网桥网络上),它会看到与普通IPv4网关地址(尝试使用docker run --rm busybox route -n
)相同的IP地址。因此,当您连接到172.17.0.1:3306
时,您将向外连接到主机,然后连接到数据库容器的已发布端口。
这不是在容器之间连接的完全标准的方式,尽管它可以工作。您应该更喜欢使用Docker命名网络,这将允许您使用容器的名称连接到另一个容器,而无需手动执行任何IP地址查找。如果你真的不能离开默认的网桥网络,那么标准的方法是--link
到另一个容器,但这整个路径被认为是过时的。
https://stackoverflow.com/questions/68488179
复制相似问题