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



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

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

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

任何帮助将不胜感激。

容器的默认网络是"网桥",你应该选择macvlanhost网络。

方法 1

docker run -d --net host image

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

方法 2

使用docker network create命令创建 macvlan 网络,参考此处

然后通过以下方式创建容器

docker run -d --net YOURNETWORK image

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

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

  • Linux 发行版名称和版本
  • 码头工人版本
  • 从容器输出docker inspect
  • Linux 防火墙配置
  • 网络配置

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

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

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

相关内容

  • 没有找到相关文章

最新更新