【问题标题】:How can I make other machines on my network access my Docker containers (using port mapping)?如何让我网络上的其他机器访问我的 Docker 容器(使用端口映射)?
【发布时间】:2016-02-05 15:50:35
【问题描述】:

我有最新的Docker Toolbox RC 在 OS X(VirtualBox 驱动程序)上运行。

Docker主机的IP是:

$ docker-machine ip
192.168.99.100

我正在运行这样的容器:

$ docker run -ti -p 4505:4505 my_image /bin/bash
[root@blah /]#

我已尝试检查是否可以从网络上运行 Windows 10 的完全不同的机器访问此端口:

$ nmap -p 4505 192.168.99.100

Starting Nmap 7.01 ( https://nmap.org ) at 2016-02-04 17:18 W. Europe Standard Time
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 0.74 seconds

如何让容器和我网络上的其他机器互相看到?


编辑:下面接受的答案可以通过物理机的 IP 地址访问指定端口上的容器。也就是说,您不会通过192.168.99.100:4505 访问容器。相反,它可以通过您机器的<IP>:4505 访问。

【问题讨论】:

标签: docker


【解决方案1】:

如果您使用带有 docker-machine 的 VirtualBox 驱动程序在您的 Mac 上运行 Docker 虚拟机,那么您可以将端口从您的 Mac 转发到虚拟机,如下所示:

VBoxManage controlvm myvirtualmachine natpf1 'myapp,tcp,,4505,,4505'

让我们分解一下:

  • VBoxManage 是控制 VirtualBox 的可执行文件的名称。
  • controlvm 告诉 VirtualBox,您是在告诉 VM(而不是 VM 管理器)做某事。
  • myvirtualmachine 是您的 Docker 虚拟机的名称(您可以通过运行 docker-machine ls 找到它)。
  • natpf1 告诉虚拟机创建一个 NAT 端口转发。这就是魔法开始发生的地方。
  • 'myapp,tcp,,4505,,4505'natpf1 的参数列表:
    • myapp 是端口转发规则的名称。这是可选的。
    • tcp 是您要转发的流量类型。另一个选项是 udp
    • 此时主机 IP 有空间,但您可以将其留空。
    • 4505 是 Mac 上您要接收流量的端口。这是您将提供给网络上其他主机的端口号。
    • 此时有空间用于访客 IP,但您可以将其留空。
    • 第二个 4505 是 Docker VM 上要接收流量的端口。您可以将其更改为您喜欢的任何内容,而不会影响第一个端口。您只需更改从 Docker 容器公开的端口即可。

你可以在https://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm找到这个命令的官方文档

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多