同一局域网下从其他Windows 11电脑连接Docker部署的SQL Server 2022失败求助
同一局域网下从其他Windows 11电脑连接Docker部署的SQL Server 2022失败求助
我来帮你一步步排查问题,先梳理下你的现状:同一局域网的另一台Windows 11电脑能ping通、RDP连接你的Docker主机,但就是没法用SSMS连Docker里的SQL Server 2022,你已经做了关防火墙、启用TCP/IP、允许远程连接这些操作,咱们再往下深挖下:
第一步:确认Docker端口映射是否正确监听所有网卡
你用的启动命令里-p 1433:1433理论上是把主机的1433端口映射到容器的1433端口,但要确认这个映射是监听所有网卡(包括局域网IP),而不是只监听本地回环(127.0.0.1):
- 在你的Docker主机上打开命令提示符,运行:
netstat -ano | findstr :1433,看看输出里是不是有0.0.0.0:1433或者[::]:1433(代表监听所有网卡) - 也可以用Docker命令验证:
docker inspect sqlserver2022 | findstr "Ports",正常输出应该是"1433/tcp": [{"HostIp": "0.0.0.0", "HostPort": "1433"}]- 如果这里HostIp是
127.0.0.1,那局域网其他电脑就访问不了,这时候去Docker Desktop的「设置」->「资源」->「网络」里,检查有没有限制只允许本地连接,确保开启了局域网访问权限
- 如果这里HostIp是
第二步:检查容器内SQL Server的配置是否正常
有时候容器启动时可能没正确加载TCP/IP配置,咱们进容器确认下:
- 运行命令进入容器:
docker exec -it sqlserver2022 bash - 检查TCP/IP是否启用:
/opt/mssql/bin/mssql-conf show network.tcpipenabled,输出应该是network.tcpipenabled = 1 - 确认监听端口是1433:
/opt/mssql/bin/mssql-conf show network.tcpport,输出应为network.tcpport = 1433
第三步:测试局域网电脑到主机1433端口的连通性
在另一台电脑上打开命令提示符,运行telnet 你的主机局域网IP 1433(比如telnet 192.168.1.100 1433):
- 如果能成功连接(窗口变成空白),说明网络通了,问题出在SSMS的连接参数上
- 如果连接失败,那还是网络/端口映射的问题,回到第一步重新排查
第四步:确认SSMS的连接参数是否正确
用SSMS连接时注意这几点:
- 服务器名称要填:
你的主机局域网IP,1433(比如192.168.1.100,1433),如果是默认1433端口,也可以直接填IP,但写上端口更保险 - 身份验证选「SQL Server身份验证」,登录名是
sa,密码是你设置的MyPass - 另外要注意:SQL Server默认要求强密码(大小写+数字+特殊字符),如果你的
MyPass太简单,容器可能没正常启动!可以用docker logs sqlserver2022查看容器日志,看看有没有密码不符合要求的报错
关于你最后一个问题:能不能只指定IP不用端口?
其实如果你的容器是映射到主机的默认1433端口,且主机的1433端口没有被其他程序占用,SSMS是可以直接填主机局域网IP而不用加端口的——因为SSMS会默认尝试连接1433端口。但为了避免端口冲突(比如主机上还有其他SQL Server实例占用1433),还是建议加上端口更稳妥。
备注:内容来源于stack exchange,提问作者Leon Tanko
相关产品推荐
相关产品推荐

