无法从Docker容器App连接外部数据库

时间:2018-01-01 17:59:43

标签: docker docker-compose dockerfile

我们有两台机器......一台是Windows机器,一台是Linux机器。我的应用程序在Linux机器上的Docker Container下运行。我们的数据库在Windows机器上运行。我们的应用程序需要从Windows机器DB获取数据。

我们在应用程序中提供了正确的数据源详细信息,如IP,用户名,密码。当我们不使用docker容器但是当我们使用docker容器时它不起作用。

任何人都可以帮助我获得这个解决方案,我们如何从Docker启用的应用程序连接外部数据库,因为我们在Docker方面是全新的人。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

Container的默认网络是“网桥”,您应该选择macvlanhost网络。

方法1

docker run -d --net host image

此容器将共享您的主机IP地址,并且能够访问您的数据库。

方法2

使用docker network create命令创建macvlan网络refrence here

然后按

创建容器

docker run -d --net YOURNETWORK image

容器的IP地址与其主机的网关相同。

答案 1 :(得分:0)

有很多问题可能会影响您的容器与数据库通信的能力。在将来,您应该尽可能详细地撰写您的问题。要正确回答这个问题,您至少需要包含以下详细信息:

  • Linux发行名称&版本
  • Docker版本
  • 从容器中输出docker inspect
  • Linux防火墙配置
  • 网络配置

您的Windows计算机是否与Linux计算机在同一本地网络/子网上运行?如果是,请提供有关子网的信息,因为Docker设置的默认网桥可能会限制对本地资源的访问,而广域网上的网桥仍然可以访问。

您可以尝试将--network=host选项传递给docker run命令,如下所示:docker run --network=host <image name>。这样做无需在运行命令中指定端口映射,因为在使用主机网络时会忽略它们。

请修改您的问题,并提供上述要求的详细信息以获得完整的答案。