Docker for Windows网络

g3c*_*cko 11 windows networking hyper-v docker docker-for-windows

我在理解Docker for Windows以及网络如何工作方面遇到了一些麻烦.在带有桥接适配器和Ubuntu虚拟机的VirtualBox中,一切正常 - 我可以从我的主机(反之亦然)ping vm.

  • 如何从网络上的任何设备ping容器?
  • 如何ping其他容器不在同一主机上运行?

我的计划...

是有多个Windows机器(不是vms),每个运行一个Docker容器(形成一个存储集群),这些容器需要相互通信(overlay可能使用网络运行,或者这需要swarm?).我还需要在外部进行讨论,这是我能够工作的唯一部分,使用docker run -p选项公开我需要的容器中的端口.

为了详细说明我的过程,我的目标是构建一个在Linux上运行的Amazon S3风格的键值存储(特别是使用Riak KV).由于这需要运行该软件的多台计算机,在我看来,Docker可以带来诸多好处,包括易于设置和部署,以及在Windows上运行基于Linux的软件的框架,这是我目前很容易访问的.

我测试的情侣......

如果我使用默认的网桥在同一主机上运行两个Ubuntu容器,它们可以相互ping通.ifconfig列出具有172.17 ... ip地址的local和eth0适配器.从这一点来看,它听起来不像我正在寻找的桥,因为我想要多个主机.

单个主机上的网络相对较小

如果我运行Ubuntu容器,--network host我可以从ifconfig"br-xxxxxxxx"和"vethxxxxxx"适配器获得更多输出.从文档中,

在主机网络堆栈上添加容器

这听起来很有用,但也许我不理解.我知道Docker for Windows运行MobyLinuxVM,并使用Hyper-V适配器和交换机,主机指的是什么?windows pc还是这个VM?有了--network host,我仍然无法ping容器或从容器ping我的桌面.

其他想法...

似乎Docker的常见用法不是基于Windows的,所以我找不到太多引用.我的用例与Docker的正常使用有很大不同吗?任何人都能指出我在这里缺少的东西吗?

阅读Hyper-V适配器使我看起来除了启动容器之外还需要更改网络适配器设置?我想,我很难理解在windows,hyper-v adapter/switch,ubuntu和docker之间的位置.

Tre*_*van 11

好问题.我赞成它来反击你收到的downvote.问题写得很好,我也没有看到任何问题.也许他们认为它不属于StackOverflow,更适合ServerFault.

这里有一些有用的子弹:

  • Docker for Windows创建了一个名为的Hyper-V Linux VM MobyLinuxVM.
  • Hyper-V VM必须连接到虚拟交换机才能进行网络访问
  • Docker for Windows创建了一个Internal名为的Hyper-V 虚拟交换机DockerNAT
  • 查看什么是Hyper-V虚拟交换机说明有关internal虚拟交换机类型的详细信息(您已经链接到此)

Docker Swarm

  • 使用overlay网络确实需要Docker Swarm模式(参见:SwarmKit)

这里的底线是:

您尝试解决的方案不适合Docker for Windows.Docker for Windows旨在使软件开发人员能够在安装了Docker Engine的本地Linux VM上编写,调试和测试他们的应用程序.就是这样.Docker for Windows可自动完成设置Hyper-V VM,安装Linux,安装Docker Engine以及从命令行访问它的过程.

"我的计划"下的建议方案对于Docker for Windows来说不合适.相反,我建议设置一个Docker Swarm模式集群.但是,Docker存储比这更复杂.您还需要考虑使用Docker存储驱动程序,该驱动程序在您的Swarm群集Docker主机上启用共享存储.有一种非常受欢迎的叫做Flocker的产品,由ClusterHQ开发.我建议将其作为一种可能的解决方案.

但是,我还建议重新评估你的目标,以及你如何完成它们.Docker可能甚至不是通用共享存储的正确解决方案.

希望这有助于您的努力.