Docker:物理机器 – VM -Docker容器之间的连接

我刚刚开始对docker进行一些实验。 在我的Windows主机上,我有一个托pipeDocker容器的虚拟机。 我想在主机和容器之间进行通信,或者可能是其他虚拟机和此容器。

  • 主机IP为192.168.2.10,子网掩码为255.255.255.0
  • VM IP为192.168.254.130,子网掩码为255.255.255.0
  • 容器获得一个IP 172.17.0.13

我已经看到很less有博客谈论桥接,但我仍然不确定如何做到这一点。 我没有很多networking的东西。

一点指导将有所帮助。

谢谢

编辑:我跟着这个桥梁build设,但不明白什么IP范围给桥,所以,我给了192.168.254.1/24。 命令ip addr show bridge0显示state UNKNOWN

我假设你正在使用在Virtualbox上运行的Linux主机在Windows上使用Docker。 请注意,默认情况下, docker-machine会创build一个NAT适配器(带有一个端口转发)和一个仅用于主机的适配器,有时,让不同的机器与正确的IP进行通信是非常棘手的。

正如Adrian所回答的那样,你通常通过端口转发来“发布”端口,但是如果你的容器必须通过多个端口进行通信,并且你只运行一个这样的容器/主机,通过docker run --net host ...来启动容器会更容易docker run --net host ...这种方式主机的以太网适配器是直接可见的容器内(正如我在这里发现的)。

正常的做法是在容器上发布一个端口并使用虚拟机的IP地址,例如:

 docker run -d -p 80:80 nginx 

然后在主机上运行的浏览器中访问虚拟机的IP地址,您应该可以看到网页。