在同一主机上的Windows和Linux泊坞窗容器之间进行通信

这可能看起来微不足道,但经过一些审判错误,我来到SO社区一点帮助!

我创build一个networking,称之为docker-net。

我有一个Linux容器,让我们所有的LC1,有一个公布的端口6789(所以当创build它有参数-p 6789:6789),我让它joindockernetworking( – networkingdocker网)这工作正常,通过我的主机,我可以沟通它没有问题。

我切换到Windows容器,并检查LC1仍在运行。 它呢! 惊人。

我创build一个容器,我们称之为WC1。 它还发布了9000内部映射到80(-p 9000:80)

WC1内的应用程序尝试使用从networking分配的IP连接到LC1(docker检查LC1),我无法通信。

可能有一个我无法理解的概念。

我知道WC1和LC1有不同的网关和子网。 那可能是罪魁祸首?

任何帮助,让我做这个工作,表示赞赏!

编辑:这是我为上面的scheme运行的命令:

docker network create docker-net docker run -d -p 6789:6789 --name LC1 --network docker-net LC1 docker inspect LC1 

IP是172.18.0.2

切换到Windows容器

 docker run -d -p 9000:80 --name WC1 WC1 

在dockernetworking连接文件,它声明,你可以分配一个IP到一个容器相同的应该与docker运行 – networking名称–ip。 然后使用该IP来访问容器。

指定容器将在给定networking上使用的IP地址

您可以指定要分配给容器界面的IP地址。

$ docker network connect –ip 10.10.36.122多主机networkingcontainer2

我发现这些:

  • 一个关于serverfault的问题关于同一个问题。 查看caching的谷歌版本: 将Windows容器连接到同一个Docker主机上运行的Linux容器[closures]
  • 一篇文章: 在Windows 10上运行Linux和Windows Containers

我认为使这两个容器通信的唯一方法是通过主机和通过端口进行通信。 为了考试,LC1将使用-p [your app port]:8080和WC1 -p [your app port]:9090

通过说[your app port]我的意思是,这是由你自己决定使用什么(一个tcp / udp监听套接字,一个REST API …)

随着docker的发展,在不久的将来可能会有更好的解决scheme。