如何在Docker Desktop容器内连接本地SQL Server Express?
从Docker容器连接本地SQL Server Express的解决方法
第一步:开启SQL Server TCP/IP协议并配置端口
- 打开SQL Server配置管理器(开始菜单搜索即可找到)
- 展开「SQL Server网络配置」→ 选择「SQLEXPRESS的协议」
- 右键点击「TCP/IP」,选择「启用」
- 双击TCP/IP进入设置,切换到「IP地址」标签,拉到最底部的IPAll区域:
- 设置「TCP端口」为
1433 - 清空「TCP动态端口」的内容
- 设置「TCP端口」为
- 找到服务列表里的「SQL Server (SQLEXPRESS)」,右键选择「重启」
第二步:修正容器内的数据库连接字符串
容器里的localhost指向容器自身,不是宿主机,所以要替换成宿主机的专属访问地址:
- Windows系统直接用
host.docker.internal作为数据源,连接字符串示例:Data Source=host.docker.internal,1433;Initial Catalog=你的数据库名;User ID=你的登录账号;Password=你的密码;TrustServerCertificate=True; - 如果
host.docker.internal无法访问,直接替换成宿主机的本地IP(比如192.168.1.100),同时确保Windows防火墙允许1433端口的入站请求
第三步:验证端口监听状态
重新打开TCPView,应该能看到sqlservr.exe监听0.0.0.0:1433或你的本地IP:1433。如果仍未显示,检查SQL Server服务是否确实重启,或者配置是否保存生效。
额外注意点
- 确保SQL Server的登录账号(比如sa)已启用,且密码设置正确
- 连接字符串必须添加
TrustServerCertificate=True,避免SSL证书验证失败 - 不需要在compose.yaml中映射1433端口到容器——这是容器主动连接宿主机端口,不是宿主机访问容器内的服务
内容的提问来源于stack exchange,提问作者buga
相关产品推荐
相关产品推荐

