多个 docker 容器、IP 地址、VM,OSX

Multiple docker containers, IP addresses, VM, OSX

我在 OSX 运行 docker 通过 boot2docker。我正在通过 API.

远程使用 docker

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

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

其中 local.ip 可能是来自 boot2docker 的 ip 或其他任何内容。

可能的解决方案是在创建容器时定义端口绑定,并将每个容器绑定到不同的端口。但是,我想避免这种情况,因为此配置成为容器的一部分,并且只存在于 OSX 上的 运行。如果我在 linux 上执行上述所有操作,我们就不会遇到此问题。

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

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

例如,假设我启动了以下 Web 服务器:

$ 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 命令行,由于 VM,它变成 curl $(boot2docker ip):8000,但是由于 boot2docker,我们在启动 Web 服务器方面没有做任何不同的事情。