Docker for windows:linux 和 windows 容器之间的通信

Docker for windows: Communication between linux and windows containers

我正在尝试使用 Visual Studio Docker 工具为项目设置开发环境。

我有一堆基于 .net 核心的微服务和一些完整的 fx 微服务,它们通过 RabbitMq 进行通信。 RabbitMq 位于基于 linux 的 docker 容器内,.net 核心微服务也是如此,它们在 docker-compose 文件中连接到同一网络。 .Net 核心微服务通过使用容器名称作为主机名连接到 RabbitMq 没有问题。

但是当涉及到基于 windows 的容器时,存在一个问题,即 windows 和 linux docker 引擎之间不共享网络,所以我不能使用容器名称将基于 windows 的微服务连接到 RabbitMq 服务(使用主机 IP 对于开发机器来说是弱的,因为它对于其他开发人员来说会有所不同,并且会带来一些配置开销)。

AFAIK swarm 模式可用于确保此类通信,但这更适合 test/prod 环境而不是开发,而且在这种情况下,酷炫的 Visual Studio 容器调试功能将丢失(它运行 docker-compose up 命令)。

那么在单个主机上进行混合系统容器间通信的最佳方式是什么?

创建一个主机文件,其中 RabbitMQ Docker 容器的 IP 设置为一个名称。例如,使用 Docker 工具箱,您可以将以下内容放入主机中: 192.168.99.100 docker 然后每个开发者都可以设置IP并且docker-compose可以使用这个名称。