多个docker集装箱,IP地址,虚拟机,OSX

我通过boot2docker在OSX上运行boot2docker 。 我通过API远程使用docker。

  • 我创build了一个Web服务器的几个图像。 Docker为每个容器分配不同的IP地址,比如172.17.0.61 。 每个Web服务器都在端口8080上运行。

  • 在VM内部,我可以在这个地址上ping服务器。

如何将这些不同的容器IP地址(从VM)映射到VM中的同一个IP地址,但在不同的端口上? 例如

 <local.ip>:9001 -> 172.17.0.61:8080 <local.ip>:9002 -> 172.17.0.62:8080 

local.ip可能是从boot2docker或其他任何IP地址。

可能的解决scheme是在创build容器时定义端口绑定 ,并将每个容器绑定到不同的端口。 不过,我想避免这种情况,因为这个configuration成为容器的一部分,只存在,因为在OSX上运行。 如果我在linux上完成所有这些,我们不会有这个问题。

如何映射内部容器到不同的端口?

发布端口是正确的解决scheme。 无论您是远程运行还是本地运行,都会遇到同样的问题,只是IP地址发生更改。

例如,说我开始下面的networking服务器:

 $ docker run -d -p 8000:80 nginx $ docker run -d -p 8001:80 nginx 

从VM内部(运行boot2docker ssh ),我可以运行curl localhost:8000curl localhost:8001到达网站。 这是在Linux上使用Docker的正常方式。 在Mac命令行中,由于虚拟机的原因,它变成了curl $(boot2docker ip):8000 ,但是由于curl $(boot2docker ip):8000 ,我们没有做任何与启动web服务器有关的事情。