使用 host.docker.internal 从 docker 连接到本地计算机(主机)中的 SQL 服务器

Connect to SQL Server in local machine (host) from docker using host.docker.internal

我正在尝试使用 host.docker.internal(按照 https://docs.docker.com/docker-for-windows/networking/#use-cases-and-workarounds 中的建议)

连接到本地计算机中的 SQL 服务器实例 运行

host.docker.internal 已成功解析为 IP,并且可以 ping 通

而且我已经在我的防火墙配置1433

中打开了端口1433

错误信息

Connection refused 192.168.65.2:1433

我的连接字符串

Data Source=host.docker.internal,1433;Initial Catalog=;Persist Security Info=False;User ID=;Password=;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

docker版本

Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:12:48 2018
 OS/Arch:      windows/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:22:38 2018
  OS/Arch:      linux/amd64
  Experimental: true

Docker windows 版本

如果有人遇到类似问题,我是这样解决的

  • 打开SQL服务器配置管理器
  • 在服务器网络配置中启用 TCP/IP
  • 重启SQL服务服务

如果仍然无法正常工作,还有一些事情需要检查

  1. 防火墙(开放端口 1433)
  2. 启用到您的 sql 服务器的远程连接