gpt4 book ai didi

linux - 多个 docker 容器、IP 地址、VM、OSX

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:37 24 4
gpt4 key购买 nike

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

  • 我创建了网络服务器的多个图像。 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 或其他任何东西。

可能的解决方案是在创建容器时定义端口绑定(bind),并将每个容器绑定(bind)到不同的端口。但是,我想避免这种情况,因为这个配置成为容器的一部分,并且只存在于 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 服务器方面没有做任何不同的事情。

关于linux - 多个 docker 容器、IP 地址、VM、OSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30679652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com