如何从主机外部(同一网络)连接到docker容器[OSX 10.11]

JP *_*aub 8 macos lan docker

设置:

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

软件:

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

问题:

  • 可以使用"默认"IP地址和Odoo相关的端口号在计算机A上访问Odoo.地址的一个例子是:192.168.99.101:8069.
  • 使用"默认"IP地址加上Odoo的相关端口号,无法在计算机B上访问Odoo.

问题:

  • 如何配置VirtualBox环境,以便计算机B可以访问LAN上的Odoo?

Awa*_*yte 7

192.168.99.101是计算机A内部的Docker主机IP地址.您只需要将defaut端口8069的端口转发配置到主机端口8069.然后odoo计算机B可以通过计算机A的IP地址访问(例如:10.0. 1.22)加上端口8069.由于两台计算机都在同一网络中,因此您不需要更改路由器的设置(防火墙设置除外,如果有的话)

10.0.1.22:8069
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

在此输入图像描述


JP *_*aub 3

笔记!

涉及修改网络适配器 1 的解决方案更容易实现。这是推荐的解决方案。

的背景:

安装 Docker 后,VirtualBox 中会创建一个称为“默认”的虚拟机 (VM)。在 VirtualBox Docker 中,设置了一个网络配置,允许主机(计算机 A)通过 docker-machine IP 访问“默认”上运行的容器。但是计算机B无法通过docker-machine ip访问相同的容器。

基本流程:

  1. 通过 Oracle 的 VM VirtualBox Manager 调整 VM“默认”设置以形成桥接网络
  2. 启动“默认”VM。
  3. 查找“默认”虚拟机的桥接网络 IP (BN-IP) 地址。
  4. 启动 Odoo 容器。
  5. 在计算机 B 的 Web 浏览器中输入 BN-IP 地址和 Odoo 端口(例如 192.168.1.93:8069)。
  6. 享受(除非出了问题,什么时候不会出问题?)。

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

  1. 打开 VirtualBox GUI。
  2. 查看 GUI 左侧的虚拟机列表。
  3. 单击“默认”(或您要修改的虚拟机)
  4. 单击“设置”图标(齿轮对象)
  5. 按照屏幕截图进行操作。注意:如果使用以太网电缆连接 LAN,请选择 en0 而不是 en1。屏幕截图中的 MAC 地址已被删除。它应该自动填充。在此输入图像描述

    启动“默认”VM

    对于 Mac,最简单的方法是单击 Docker QuickStart 终端图标来启动“默认”VM。

在此输入图像描述

等待一两分钟后,您将看到一个包含“默认”IP 的启动屏幕。这不是您要找的 BN-IP。 在此输入图像描述

查找“默认”VM 的 BN-IP 地址

这是关键部分,让我沮丧了好几个小时。幸运的是,存在良好的网络发现指令。运行 Docker 终端中的说明,应该会出现“default.YourLANDomain”的地址。它看起来像:


default.ripcord.lan (192.168.1.93) 位于 en1 ifscope [以太网] 上的 x:x:xx:xx:xx:xx

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

如果上述方法无法找到“默认”虚拟机的 BN-IP,您可能会幸运地查看路由器所看到的内容(请参见下面的示例)。请注意,“jakes-macbook”在设备图标附近有一个“2”注释。这意味着有两个客户端与该图标关联。192.168.1.24 不是“默认”VM 的 BN-IP。IP 地址会来回切换(在奇数时间)。另一个地址 192.168.1.93 是“默认”VM 的 BN-IP。
在此输入图像描述

永无止境的故事的其余部分

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

故障排除

使用 ping 尝试确定“默认”VM 的 BN-IP 是否处于活动状态,然后从那里开始使此方法起作用。要获得更清晰的解决方案,请参阅有关修改网络适配器 1 的方法。这是一种更容易实现的方法。