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

Docker: Connectivity between Physical Machine - VM -Docker container

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

我看到很少有博客谈论桥接,但我仍然不确定它以及如何做到这一点。我不太喜欢网络。

一点指导会有帮助。

谢谢

编辑: 我遵循了这个 bridge-building 但无法理解要给网桥的 ip 范围,所以,我给了 192.168.254.1/24。命令 ip addr show bridge0 显示 state UNKNOWN.

通常的做法是在容器上发布一个端口并使用 VM 的 IP,例如:

docker run -d -p 80:80 nginx

然后在主机上的浏览器 运行 中访问 VM 的 IP,您应该会看到该网页。

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

正如 Adrian 所回答的那样,您通常 "publish" 通过端口转发端口,但如果您的容器必须通过许多端口进行通信,而您只是 运行 一个这样的容器/主机,则可能更容易通过 docker run --net host ... 启动容器,这样主机的以太网适配器在容器内直接可见(我发现 )。