我们有两台机器...一个是Windows机器,另一个在Linux机器中。我的应用程序在 Linux 机器的 Docker 容器下运行。我们的数据库在Windows机器上运行,我们的应用程序需要从Windows机器数据库获取数据。
正如我们在应用程序中提供了适当的数据源详细信息,例如IP,用户名,密码。 当我们不使用 Docker 容器时它可以工作,但当我们使用 docker 容器时它不起作用。
任何人都可以帮助我获得这个解决方案,我们如何从启用 Docker 的应用程序连接到数据库外部,因为我们在 Docker 方面是全新的人。
任何帮助将不胜感激。
容器的默认网络是"网桥",你应该选择macvlan
或host
网络。
方法 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 命令中指定端口映射,因为在使用主机的网络时会忽略这些映射。
请编辑您的问题并包括上述要求的详细信息以获得完整的答案。