无法ping托管在其他VM上的docker容器

无法ping托管在其他VM上的docker容器,docker,ubuntu,networking,virtual-machine,docker-networking,Docker,Ubuntu,Networking,Virtual Machine,Docker Networking,当我尝试从Docker-A ping到Docker-B时,我得到了目标主机不可访问错误。我使用ping 172.17.0.3与Docker-B进行连接。Docker基本网络问题困扰着我。非常感谢您的帮助。 谢谢切勿直接使用容器专用IP地址。在这种情况下,VM A无法访问VM B上的容器专用IP地址。实际上,只有两种情况下容器专用IP地址是可访问的,在这两种情况下,都有更好的方法 每个虚拟机都运行自己的Docker实例,并有自己的专用网络空间。虽然看起来这两个容器都有172.17.0.0/16中的

当我尝试从Docker-A ping到Docker-B时,我得到了目标主机不可访问错误。我使用ping 172.17.0.3与Docker-B进行连接。Docker基本网络问题困扰着我。非常感谢您的帮助。
谢谢

切勿直接使用容器专用IP地址。在这种情况下,VM A无法访问VM B上的容器专用IP地址。实际上,只有两种情况下容器专用IP地址是可访问的,在这两种情况下,都有更好的方法

每个虚拟机都运行自己的Docker实例,并有自己的专用网络空间。虽然看起来这两个容器都有172.17.0.0/16中的地址,但它们实际上是独立的网络,事实上,两个Docker守护进程可以独立决定为这两个容器分配相同的IP地址。除非您特意配置一个VM(或物理系统)无法通过专用IP地址到达另一台服务器的容器,否则没有IP路由可以到达那里。(在本例中,由于两台主机具有相同的IPv4网络范围,因此VM A到172.17.0.0/16的路由指向VM A的Docker网络,该网络与VM B不同。)

要从Docker空间外部访问容器,需要使用
Docker run-p
选项(或等效的Docker Compose
ports:
设置)启动容器。然后,您可以使用主机(或VM)的DNS名称或IP地址以及发布的(第一个)端口号访问容器。您不能用这种方式ping(1)远程容器,但也没有任何特定的理由要发送容器ICMP数据包

 Two docker container hosted on two different VM, port exposed to both docker container 60000. 
 Both VMs communicate through each through NAT NETWORK and not using docker 
 network compose.  Running docker-A sudo docker run --rm -it -p 8888:8888 -v 
 $(pwd):/workdir -w /workdir tensor  
 Docker-A->172.17.0.1
 Docker-B->172.17.0.3 
 VM-A(Docker-A hosted)->172.25.1.24
 VM-B(Docker-B hosted)->172.25.1.13
如果这两个容器位于同一个主机(或VM)上,则可以同时运行这两个容器
--name some name--net some net
;如果两个容器都有相同的
--net some net
,那么每个容器都可以使用另一个容器的
some name
作为主机名到达另一个容器。即使您不使用Compose,也可能更加平易近人;如果不使用Compose,则必须手动创建网络


(我说过有两种情况下容器专用地址可以工作。它们是(1)来自运行容器的同一台Linux主机的控制台,以及(2)在同一Docker网络上的容器之间。它们不适用于其他主机,也不适用于MacOS或Windows主机。上述方法没有这些限制,并且在删除和重新创建容器时容器专用IP地址更改等情况下仍然有效。)

您运行了哪些Docker命令?或者你有一个撰写文件?请更新您的问题。@QuintenScheppermans我已经更新了问题。谢谢你认为我应该使用docker compose吗?就我个人而言,我更喜欢去极化方法而不是命令式方法,但这在这里并不重要。我需要的是你的“docker run…”命令。谢谢@QuintenScheppermans更新了这个问题,现在包括了运行docker容器的命令。看起来你的格式有点太复杂了。我猜你的代码块中的前两句话是你自己输入的用来解释你的情况的句子?谢谢@David Maze根据你的建议做得很好
vm-a$ curl http://172.25.1.13:8888  # using vm-b's IP address