多个 docker 容器、IP 地址、VM,OSX
Multiple docker containers, IP addresses, VM, OSX
我在 OSX 运行 docker 通过 boot2docker
。我正在通过 API.
远程使用 docker
我创建了多个 Web 服务器图像。 Docker 为每个容器分配不同的 IP 地址,如 172.17.0.61
。每个网络服务器 运行 在端口 8080 上。
在虚拟机内部,我可以 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 或其他任何内容。
可能的解决方案是在创建容器时定义端口绑定,并将每个容器绑定到不同的端口。但是,我想避免这种情况,因为此配置成为容器的一部分,并且只存在于 OSX 上的 运行。如果我在 linux 上执行上述所有操作,我们就不会遇到此问题。
如何将内部容器映射到不同的端口?
发布端口是正确的解决方案。无论您是 运行 远程还是本地,您都会遇到同样的问题,只是 IP 地址发生了变化。
例如,假设我启动了以下 Web 服务器:
$ 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 命令行,由于 VM,它变成 curl $(boot2docker ip):8000
,但是由于 boot2docker,我们在启动 Web 服务器方面没有做任何不同的事情。
我在 OSX 运行 docker 通过 boot2docker
。我正在通过 API.
我创建了多个 Web 服务器图像。 Docker 为每个容器分配不同的 IP 地址,如
172.17.0.61
。每个网络服务器 运行 在端口 8080 上。在虚拟机内部,我可以 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 或其他任何内容。
可能的解决方案是在创建容器时定义端口绑定,并将每个容器绑定到不同的端口。但是,我想避免这种情况,因为此配置成为容器的一部分,并且只存在于 OSX 上的 运行。如果我在 linux 上执行上述所有操作,我们就不会遇到此问题。
如何将内部容器映射到不同的端口?
发布端口是正确的解决方案。无论您是 运行 远程还是本地,您都会遇到同样的问题,只是 IP 地址发生了变化。
例如,假设我启动了以下 Web 服务器:
$ 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 命令行,由于 VM,它变成 curl $(boot2docker ip):8000
,但是由于 boot2docker,我们在启动 Web 服务器方面没有做任何不同的事情。