如何配置让Docker(WSL2)容器内应用读取Windows主机SQL Server数据
解决WSL2 Docker容器访问Windows主机SQL Server的配置方案
1. 开启SQL Server远程连接支持
- 打开SQL Server配置管理器,展开「SQL Server网络配置」,找到对应实例的「协议」,启用TCP/IP协议。
- 双击TCP/IP协议,切换到「IP地址」选项卡:
- 拉到最底部的「IPAll」区域,设置「TCP端口」为
1433(默认端口,若修改过请用自定义端口),清空「TCP动态端口」。
- 拉到最底部的「IPAll」区域,设置「TCP端口」为
- 重启SQL Server服务,确保配置生效。
2. 配置Windows防火墙放行SQL Server端口
- 打开Windows Defender防火墙,点击「高级设置」→「入站规则」→「新建规则」。
- 规则类型选择「端口」,下一步;选择「TCP」,输入指定端口(如
1433),下一步。 - 选择「允许连接」,下一步;应用到所有网络类型,下一步;给规则命名(如「SQL Server 1433端口」)后完成。
3. 获取Windows主机在WSL2中的可访问IP
- 在WSL2终端执行命令:
cat /etc/resolv.conf,输出结果里的nameserver对应的IP就是Windows主机的可访问IP(这个IP是WSL2默认映射的主机地址)。 - 备选方式:在Windows命令行执行
ipconfig,找到「以太网适配器 vEthernet (WSL)」的IPv4地址,也是可用的主机IP。 - 注意:WSL2重启后IP可能变化,若需固定,可在Windows主机设置静态IP,或在WSL2的
/etc/hosts中添加映射(如192.168.x.x windows-host)。
4. 配置容器内应用的连接字符串
- 连接字符串需使用上述获取的Windows主机IP、SQL Server端口,搭配正确的数据库用户名和密码。
- 示例(以.NET应用为例):
Server=192.168.x.x,1433;Database=YourTargetDB;User Id=sa;Password=YourStrongPassword;TrustServerCertificate=True; - 必须添加
TrustServerCertificate=True,避免容器与主机间的SSL证书验证失败问题。
5. 验证连接有效性
- 在容器内安装
sqlcmd工具(以Ubuntu镜像为例:apt update && apt install -y mssql-tools),执行测试命令:sqlcmd -S 192.168.x.x,1433 -U sa -P YourStrongPassword - 若能进入SQL命令行提示符,说明连接成功。
内容的提问来源于stack exchange,提问作者ShanN
相关产品推荐
相关产品推荐

