多个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:8000
或curl localhost:8001
到达网站。 这是在Linux上使用Docker的正常方式。 在Mac命令行中,由于虚拟机的原因,它变成了curl $(boot2docker ip):8000
,但是由于curl $(boot2docker ip):8000
,我们没有做任何与启动web服务器有关的事情。