windows docker的程序,如何连接到windows宿主机的mssql数据库?

shoppo0505 2023-07-05 16:39:52

windows系统安装了docker for windows,此外也写了一个python程序,程序在windows宿主机运行的时候,可以连接到数据库,没有问题,但是制作成image,运行在docker上面的时候,连接数据库出错:Unable to connect: Adaptive Server is unavailable or does not exist (本地数据库)')

这个问题该如何解决?

 

想要达到的效果是在宿主机或者docker中运行python程序的时候,都能直接连接到宿主机的mssql数据库

...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pxxaish9527 2023-07-10
  • 打赏
  • 举报
回复 1

在Docker容器中运行与宿主机上不同的网络环境,可能会导致连接数据库时出现问题。下面是一些可能的解决方法:

  1. 检查数据库主机地址:在Docker容器中,您需要使用数据库主机的网络地址来连接数据库,而不是使用 "localhost" 或 "127.0.0.1"。确保您在连接数据库时使用的是正确的主机地址。

  2. 确认数据库端口是否映射:如果您在Docker容器中运行数据库服务,并且需要从宿主机或其他容器中访问该数据库,请确保在运行Docker容器时将数据库端口映射到宿主机上。通过 -p 参数来映射端口,例如 -p 宿主机端口:容器端口。

  3. 检查防火墙设置:如果您的宿主机或Docker容器使用了防火墙,确保数据库的端口未被阻止。在某些情况下,您可能需要在防火墙中允许数据库端口的传入连接。

  4. 确认数据库配置:在Docker容器中运行的应用程序需要正确的数据库配置信息,包括用户名、密码、数据库名称和主机地址。确保在容器中使用正确的配置。

  5. 使用Docker网络:尝试使用Docker的网络功能,例如创建一个Docker网络,并将数据库容器和应用程序容器连接到同一个网络中。这样,它们可以直接通过容器名称进行通信,而无需使用主机地址。

  6. 检查容器网络模式:确保您在创建容器时使用的网络模式适合您的需求。默认情况下,Docker容器使用桥接模式,这可能会导致网络访问问题。您可以尝试使用主机模式或自定义网络模式来解决连接问题。

  7. 检查数据库配置和凭据:确保数据库的配置和凭据与应用程序的期望值相匹配。验证用户名、密码和数据库名称是否正确,并且数据库用户具有足够的权限来连接和访问数据库。

请根据您的具体情况尝试以上解决方法,并确保您在Docker容器中的应用程序使用了正确的数据库配置。如果问题仍然存在,可以提供更多关于Docker容器和应用程序的详细信息,以便更好地理解问题并给出更具体的解决方案。

shoppo0505 2023-07-13
  • 举报
回复
@pxxaish9527 你这个答案很chatgpt啊。回复一下上面的内容: 1. 确实不能使用localhost,这个很容易理解。 2. 如果默认1433,就不需要额外指定端口 3. 如果使用host网络,那就没有防火墙的问题 4. 这个。。。就不用多说了 5. docker运行时候,我没记错的话,会有至少3个默认网关,host, bridge,none 6. 使用host网关就可以忽略这个问题了, 7. 忽略
shoppo0505 2023-07-06
  • 打赏
  • 举报
回复

问题已经解决,网络使用host就可以了

虎叔 2023-07-06
  • 打赏
  • 举报
回复

docker默认是通过软交换机链接网络,IP地址与宿主机是不同的,默认本机链接可以,其它主机不行的话可能是由于Windows防火墙或者Mysql的默认连接配置。

shoppo0505 2023-07-06
  • 举报
回复
@虎叔 谢谢回复,我要的就是本机连接

1,167

社区成员

发帖
与我相关
我的任务
社区描述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。
社区管理员
  • Docker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧