无法从 docker windows 容器中的 asp.net 核心应用程序连接到主机数据库
Posted
技术标签:
【中文标题】无法从 docker windows 容器中的 asp.net 核心应用程序连接到主机数据库【英文标题】:Not able to connect to host database from asp.net core application which is in docker windows container 【发布时间】:2019-05-23 07:15:18 【问题描述】:无法从 docker windows 容器中的 asp.net 核心应用程序连接到主机 sql 数据库
我已经给了主机连接字符串和用户名和密码,但它没有连接。
连接字符串如下:
Server=<ip address>,<port>;Database=<database>;Integrated Security=False;User Id=<id>;Password=<password>;MultipleActiveResultSets=True;
我得到的错误信息如下:
连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应
【问题讨论】:
【参考方案1】:如果 SQL 服务器与 Docker 容器运行在同一主机(即同一台机器)上,您可以使用容器内的特殊主机名host.docker.internal
访问主机上的“localhost
”。
换句话说:容器内的host.docker.internal
指向容器外的localhost
。
如果它们都在容器中运行,请记住确保 SQL Server 容器发布正确的端口(使用 -p
标志)。
【讨论】:
感谢乔恩的回复。我在容器中运行了 api,它试图连接到我机器上托管的 MSSQL 数据库实例。根据您的输入,我已将 appsettings.json 文件中的 connectionstring 属性更新为:“ConnectionString”:“Server=host.docker.internal;Database=DemoDB;Trusted_Connection=True;” .我进行了验证,现在出现错误:建立与 SQL Server 的连接时发生网络相关或特定于实例的错误。服务器未找到或无法访问。 非常感谢任何帮助:) 有点不确定。我对 MSSQL 没有任何经验。你确定它连接到正确的端口吗? 是的,它在端口号 1433 上运行,会不会是防火墙问题? 我不这么认为,Docker 通常会处理所有这些。我唯一能想到的就是测试您是否能够使用docker exec
从Web API 容器访问MSSQL 容器。此外,您可能想看看这个先前的答案,它也谈到了 Docker 中的 MSSQL:***.com/questions/54008489/…以上是关于无法从 docker windows 容器中的 asp.net 核心应用程序连接到主机数据库的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 版本 10.0.18363 中无法切换到 Docker 中的 Windows 容器
无法从 docker 容器连接到 Localhost Mysql
从 Docker 容器中的 Java 应用程序访问 Windows 10 中的文件夹
无法从远程 docker 容器监听 docker 容器内运行的服务
无法从另一个 docker 容器中的烧瓶应用程序对驻留在 docker 容器中的 django 应用程序进行“获取”调用 [重复]