若docker容器ip和外部网络ip相同,那个么若使用telnet,哪个会得到响应?有什么想法吗

若docker容器ip和外部网络ip相同,那个么若使用telnet,哪个会得到响应?有什么想法吗,docker,Docker,如果docker容器IP和外部网络IP相同,那么如果使用telnet,哪个会得到响应 我知道下面的配置是最差的配置,但我想知道其行为 给你举个例子 我的应用程序运行在localhost中,localhost正在与docker容器内的数据库通信。 我们提供的定制IP-(IP:10.0.0.1,端口:5432) 另一个在容器外部运行的数据库,假设容器(IP和端口)和主机(IP和端口)都是相同的。 主机IP:10.0.0.1,主机端口:5432 哪一个将通过应用程序主机/容器数据库连接,还是同时连接数

如果docker容器IP和外部网络IP相同,那么如果使用telnet,哪个会得到响应

我知道下面的配置是最差的配置,但我想知道其行为

给你举个例子

我的应用程序运行在localhost中,localhost正在与docker容器内的数据库通信。 我们提供的定制IP-(IP:10.0.0.1,端口:5432)

另一个在容器外部运行的数据库,假设容器(IP和端口)和主机(IP和端口)都是相同的。 主机IP:10.0.0.1,主机端口:5432

哪一个将通过应用程序主机/容器数据库连接,还是同时连接数据库

如果您想使用telnet 10.0.0.1 5432?哪一个会回应,为什么


我认为这是不可能的,即使容器和主机具有相同的IP(不知何故),也无法将容器端口5432映射到主机端口5432,因为该端口上已经有一个应用程序(主机dB)在运行


考虑一个场景,其中您也在为容器使用主机网络,可能是通过使用
--networkhost
。这样,您的容器IP将与主机IP相同。容器将使用主机的5432端口运行数据库。现在,如果您尝试使用相同的端口在主机上启动dB,您应该会收到一个错误,即端口已被使用。

感谢您的宝贵意见。为了更好地理解,你能看完所附的图表吗?在图表中,你所说的主机1和主机2是什么意思?为了更好的理解,我更新了我的答案。对不起,我的错误。主机是指服务器1和服务器2。通过使用外部网络ip(公共ip)连接到服务器2数据库,我的docker容器在服务器1中运行,而应用程序在主机服务器上,而不是在容器中。那么,您是否试图说您有两台服务器,应用程序在server1上运行,db在server1和server2内的容器上运行。是这样吗?但如果是这种情况,server1和server2怎么可能具有相同的ip?如果您向主机公开端口,并且在主机上,完全相同端口上的某个进程一直在运行,那么您的容器将无法绑定端口。基本上,如果主机上有两个数据库都在同一端口上,那么这应该是相同的。如果您要执行telnet,第一个开始运行的数据库将给您响应(因为只有一个数据库将运行),换句话说,您的计算机可以看到两个具有相同IP地址的不同对等机?这意味着您的网络配置被套住了,您将有大量丢包和/或错误路由。通过使用外部网络ip(公共ip)连接到服务器2数据库,我的docker容器在服务器1中运行,应用程序在主机服务器上,而不是在容器中。谢谢@deceze。我知道会发生数据包丢失,但哪一个是首要任务?@deceze您的回答很有用,非常感谢。