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

Docker for windows:linux和windows容器之间的通信,docker,.net-core,docker-compose,visual-studio-2017,docker-for-windows,Docker,.net Core,Docker Compose,Visual Studio 2017,Docker For Windows,我正在尝试使用VisualStudioDocker工具为项目设置开发环境 我有一堆基于.net内核的全fx微服务,它们通过RabbitMq进行通信。RabbitMq位于基于linux的docker容器中,.net核心微服务也是如此,它们在docker compose文件中连接到同一网络。Net核心微服务通过使用容器名称作为主机名连接到RabbitMq不会有问题 但当涉及到基于windows的容器时,存在一个问题,即windows和linux docker引擎之间不共享网络,因此我无法使用容器名称

我正在尝试使用VisualStudioDocker工具为项目设置开发环境

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

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

AFAIK swarm模式可用于确保此类通信,但与开发相比,它更适合于测试/生产环境,而且在这种情况下,很酷的Visual Studio容器调试功能将丢失(它运行docker compose up命令)


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

创建一个主机文件,其中RabbitMQ Docker容器的IP设置为一个名称。例如,使用Docker Toolbox,您可以在主机中放置以下内容:

192.168.99.100码头工人

然后每个开发人员都可以设置IP,
docker compose
可以使用这个名称。

我不知道你可以在一台机器上运行Linux和Windows容器。你可以创建一个
hosts
文件,其中RabbitMQ docker容器的IP被设置为一个名称吗?例如,使用docker Toolbox,你可以将以下内容放入<代码>主机:192.168.99.100 docker然后每个开发人员可以设置IP,docker compose可以使用名称。Trick with hosts文件可以工作。它仍然需要一些预配置,但比硬编码IP要好得多。如果没有任何本机弹出,我将使用此选项。Thanx!有很多问题和建议说你不能混合使用Linux和Windo同一台机器上的ws-Docker引擎:也许你可以用你的策略来更新它们?我认为这个问题与windows容器(又名“windows上的Docker”)的生产设置有关。我只是使用“windows上的Docker”在我的开发机器上,您可以使用托盘图标或powershell脚本在windows和linux引擎之间手动切换(切换后容器将继续运行)。