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

5
我们有两台机器...一台是Windows机器,另一台是Linux机器。我的应用程序在Linux机器上的Docker容器中运行。我们的数据库正在Windows机器上运行。我们的应用程序需要从Windows机器的数据库获取数据。
由于我们已经在应用程序中提供了正确的数据源详细信息,如IP、用户名和密码。当我们不使用Docker容器时,它可以正常工作,但是当我们使用Docker容器时就无法正常工作。
是否有人能帮我解决这个问题,即如何从启用Docker的应用程序中连接外部数据库,因为我们在Docker方面是完全新手。
非常感谢任何帮助。

你使用什么数据库?你有一些日志吗?也许关于特定IP的数据库权限的一些内容? - eLRuLL
请提供环境详细信息。 - Kaizhe Huang
请提供您所遇到问题的正确错误或现象描述。“它不起作用”并不够具体。 - ZeissS
2个回答

8

容器的默认网络是“bridge”,您应选择macvlanhost网络。

方法1

docker run -d --net host image

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

方法2

使用docker network create命令创建一个macvlan网络,点击此处查看参考文档

然后通过以下命令创建您的容器

docker run -d --net YOURNETWORK image

该容器将具有与其主机相同的网关IP地址。


0

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

  • Linux发行版名称和版本
  • Docker版本
  • 来自容器的docker inspect输出
  • Linux防火墙配置
  • 网络配置

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

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

请编辑您的问题并包含上述请求的详细信息,以获得完整的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接