windows - Docker for Windows : Spinning up multiple docker containers locally with same port numbers

标签 windows docker docker-machine docker-for-windows docker-desktop

我正在使用 适用于 Windows 的 Docker 桌面 (使用 Hyper-V ,而不是 Docker Toolkit for Windows )。我想要完成的是启动 3 个以上的 docker 容器,并提供相同的端口集。

创建第一个 docker 容器后,我有 http://docker:8091 (或 http://10.0.75.2:8091 )可用,这很好。现在,我想做的是启动另一个具有相同端口号的容器。所以,像 http://docker2:8091 , 或 http://10.0.75.3:8091 )。然后另一个在 docker3 或 *.4:8091 .

(请注意,启动三个将暴露端口重新分配给其他随机端口的容器是小菜一碟,但我想保留端口号)。

我尝试通过 Hyper-V 管理器向 MobyLinuxVM 添加网络适配器,但这似乎破坏了 Docker,我必须重新安装才能让它再次工作。

我尝试使用 docker-machine ( docker-machine create -d hyperv --hyperv-virtual-switdch DockerNAT AnotherBox ) 启动另一个 Hyper-V 实例,但这只是锁定了一半并且不起作用。 (根据我在论坛上阅读的内容,Docker for Windows 上的 docker-machine 的意图并不是让我能够做到这一点,它只是为了管理云中的虚拟机)。

那么......有什么办法可以完成我想要做的事情吗?

最佳答案

为了发布端口,docker 使用二进制 docker-proxy 转发到容器中,实际上像:

docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8091 -container-ip 172.17.0.2 -container-port 8091

显然,它绑定(bind)到本示例中的所有接口(interface),但我认为可以绑定(bind)到特定接口(interface)。

假设您的主机上有 3 个接口(interface)和适当的 DNS 记录,则可以这样做:
docker-proxy -proto tcp -host-ip 10.0.75.2 -host-port 8091 -container-ip 172.17.0.2 -container-port 8091
docker-proxy -proto tcp -host-ip 10.0.75.3 -host-port 8091 -container-ip 172.17.0.3 -container-port 8091
docker-proxy -proto tcp -host-ip 10.0.75.4 -host-port 8091 -container-ip 172.17.0.4 -container-port 8091

关于windows - Docker for Windows : Spinning up multiple docker containers locally with same port numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044685/

相关文章:

django - 使用 Docker 创建 Django 应用程序的离线版本

windows - 在 Win 7 上在桌面上画线非常慢

c - 为 Windows 库添加 unicode 支持

csv - 将 CSV 文件加载到在 Docker 中运行的 Neo4J

当 dockerfile 中的 FROM 之前给出 ARG 指令时,Docker 构建失败?

docker - 如何为正在运行的Docker容器提供Internet访问?

docker - 如何将我的Docker IP转发到网络的其余部分?

mysql - WordPress:MySQL 数据库和 UNC 共享

windows - 当您已经安装了 IIS/SQL Server 时,在 Windows 上针对 WordPress 进行开发的最佳方法是什么?

bash - 无法在Centos 7中安装docker-machine