在其他机器上部署在Windows Docker容器中的应用程序

我在Windows 10电脑上安装了docker for windows ,并创build了一个名为MobyLinuxVM的hyper-v虚拟机。 我将一个mongodb部署到一个新的容器,并将端口映射到MobyLinuxVM 27017端口 。 MobyLinuxVM虚拟机ip是10.0.75.2 ,主机win10机器ip是192.168.1.10。 MobyLinuxVM使用名为DockerNAT的内部networkingtypeshyper-v虚拟交换机,它是MobyLinuxVM的默认交换机。

现在我可以从主机win10机器访问Mongo数据库。 但是,我怎样才能从其他机器访问mongo数据库? 我尝试将MobyLinuxVM机器networking适配器更改为另一个外部networkingtypes的虚拟交换机,但我无法获得MobyLinuxVM虚拟机IP,并尝试通过SSHlogin虚拟机,但没有识别用户名和密码。

那么如何从其他机器访问部署在Windows Docker容器中的数据库呢?

你的虚拟机只有在你使用桥接networking的情况下才会得到自己的IP地址。一旦你的hyper-v获得了IP地址,你将能够从其他机器访问它。问题不在于docker,而在于hyper-v的networking适配器。

如果你运行一个类似于“docker run -p port1:port2 mongodb”的命令,那么你应该可以使用运行docker引擎的机器主机来访问这个服务:mongodb:// your_windows_machine_host:port2这种情况适用于我,我havn没有做特殊的设置来访问容器中的mongo。