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

Kie*_*Chu 15 sql-server docker docker-networking docker-for-windows

我正在尝试使用host.docker.internal(如https://docs.docker.com/docker-for-windows/networking/#use-cases-and-workarounds 中推荐的那样)连接到在我的本地计算机上运行的 SQL Server 实例

host.docker.internal成功地解析为IP,它的响应ping操作

我在防火墙配置中打开了端口1433

错误信息

连接被拒绝 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;

码头工人版本

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
Run Code Online (Sandbox Code Playgroud)

Docker for windows 版本

适用于 Windows 的 Docker

Kie*_*Chu 15

如果有人有类似的问题,这就是我解决它的方法

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

TCP/IP

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

  1. 防火墙(开放端口 1433)
  2. 启用与 sql server 的远程连接

在此处输入图片说明

  • 就我而言,我必须执行一些额外的步骤,因为我想访问主机上的 SQL Server 命名实例。尝试访问“host.docker.internal\SQLSERVER,1433”数据源总是失败。最终我找到了允许连接到命名实例的解决方案。1.获取命名实例的端口【怎么做】(https://www.mssqltips.com/sqlservertip/2495/identify-sql-server-tcp-ip-port-being-used/) 2.启用您找到的端口的防火墙 3. 将连接字符串中的数据源更改为:“host.docker.internal,<named_instance_port>” (5认同)
  • 只是在这个连接问题上浪费了 2 个小时,才意识到我一直忘记重新启动 SQL Server 服务;(很高兴我遇到了这个答案 (2认同)