如何从主机外部(同一networking)连接到docker集装箱

设置:

  • 计算机A – 这是Docker-Machine“默认”在VirtualBox下运行的地方。 “default”正在运行一个名为“Odoo”的容器。 “默认”是使用Docker的安装过程创build的 。 “Odoo”是使用Odoo的安装过程创build的 。
  • 计算机B – 这是与计算机A位于同一局域网(LAN)上的计算机。
  • 路由器 – 这将局域网上的计算机A和计算机B连接在一起。

软件:

  • 计算机A – OSX 10.11.3 / VirtualBox 5.0.18 / Docker 1.11
  • 计算机B – Windows 7 / Firefox
  • 路由器 – ASUSWRT

问题:

  • 可以在计算机A上使用“默认”IP地址和Odoo的关联端口号访问Odoo。 地址的一个例子是:192.168.99.101:8069。
  • Odoo不能在计算机B上使用“默认”IP地址加上Odoo的相关端口号访问。

问题:

  • 如何configurationVirtualBox环境使计算机B可以访问LAN上的Odoo?

192.168.99.101是Docker主机在计算机A内部的IP地址。您只需要configuration从defaut的端口8069到主机的端口8069的端口转发。然后计算机B可以通过计算机A的ip地址访问odoo (例如: 10.0.1.22)加上端口8069.由于两台计算机都在同一个networking中,所以不需要更改路由器的设置(除非有防火墙设置)

 10.0.1.22:8069 

端口转发需要在virtulbox设置中设置

在这里输入图像说明

在这里输入图像说明

注意!

涉及修改networking适配器1的解决scheme实施起来要容易得多。 这是推荐的解决scheme。

的背景:

当安装Docker时,会在VirtualBox内创build一个名为“default”的虚拟机(VM)。 在VirtualBox Docker中设置一个networkingconfiguration,允许主机(计算机A)通过docker-machine ip访问在“默认”上运行的容器。 但是计算机B不能通过docker-machine ip访问相同的容器。

基本过程:

  1. 通过Oracle的VM VirtualBox Manager调整虚拟机“默认”的设置以形成桥接networking 。
  2. 启动“默认”虚拟机。
  3. find“默认”虚拟机的桥接networkingIP(BN-IP)地址。
  4. 启动Odoo容器。
  5. 在计算机B的networking浏览器中inputBN-IP地址加上Odoo的端口(例如192.168.1.93:8069)。
  6. 享受(除非出现问题,什么时候出错?)。

调整虚拟机的设置“默认”

  1. 打开VirtualBox GUI。
  2. 查看GUI左侧的虚拟机列表。
  3. 点击“默认”(或者你想修改的虚拟机)
  4. 点击“设置”图标(齿轮对象)
  5. 按照屏幕截图。 注意:如果使用以太网电缆连接LAN,请selecten0而不是en1。 MAC地址被删除的屏幕截图。 它应该自动填充。 在这里输入图像说明

    启动“默认”虚拟机

    对于Mac来说,通过点击Docker QuickStart Terminal图标启动“默认”虚拟机是最容易的。

在这里输入图像说明

经过一两分钟的等待,您将看到包含“默认”IP的启animation面。 这不是你正在寻找的BN-IP。 在这里输入图像说明

find“默认”虚拟机的BN-IP地址

这是关键的一部分,并把我打倒了几个小时。 幸运的是,有很好的networking发现指令 。 运行Dockerterminal中的指令,并打开“default.YourLANDomain”的地址。 它看起来像这样:

default.ripcord.lan(192.168.1.93)在x:x:xx:xx:xx:en1 ifscope [ethernet]

注意上述地址的“默认”部分。 这就是Docker虚拟机的名字。 方便人类识别的目的。

如果上述内容不适用于查找“默认”虚拟机的BN-IP,那么您可能看看路由器正在看到什么(请参阅下面的示例)。 请注意,“jakes-macbook”在设备图标附近有一个“2”注释。 这意味着有两个客户端与图标关联。 192.168.1.24不是“默认”虚拟机的BN-IP。 IP地址会来回切换(奇数次)。 另一个地址192.168.1.93是“默认”虚拟机的BN-IP。
在这里输入图像说明

其余的永无止境的故事

启动Odoo容器,然后使用BN-IP地址为192.168.1.93:8069的计算机B访问它(例如)。 巨大的成功! 希望….

故障排除

使用ping来尝试确定“默认”虚拟机的BN-IP是否处于活动状态,并从那里开始使此方法正常工作。 要获得更清洁的解决scheme,请参阅修改networking适配器1的方法。这是一种更容易实现的方法。