无法从 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 应用程序进行“获取”调用 [重复]

docker进入容器的方式