Docker部署SQL Server无法被MindsDB容器连接的问题求助
解决Docker容器间SQL Server连接拒绝问题
核心原因
你遇到的连接拒绝错误,本质是Docker容器的网络隔离机制导致的:MindsDB容器里的localhost指向容器自身,而不是运行SQL Server的容器或宿主机,所以无法访问到SQL Server服务。
解决方案
方案1:使用Docker自定义网络(推荐,最稳定)
Docker自定义网络支持容器名解析,两个容器在同一网络里可以直接用容器名互相访问:
- 创建自定义网络
docker network create sql-mindsdb-net
- 重新启动SQL Server容器,加入这个网络
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<my-password>" \ -p 1433:1433 --name sql1 --hostname sql1 \ --network sql-mindsdb-net \ -d \ mcr.microsoft.com/mssql/server:2022-latest
- 重新启动MindsDB容器,加入同一个网络
docker run -p 47334:47334 -p 47335:47335 \ --network sql-mindsdb-net \ mindsdb/mindsdb
- 修改连接参数的
host为SQL Server容器的名称sql1:
{ "host": "sql1", "port": "1433", "user": "SA", "password": "<my-password>", "database": "TestDB" }
方案2:使用宿主机IP连接(备选)
如果不想创建自定义网络,可以用宿主机的实际IP(不是localhost)来连接:
- 找到宿主机的IP地址(Linux用
ip addr,Windows用ipconfig,取局域网或Docker网桥的IP) - 修改连接参数的
host为这个IP:
{ "host": "你的宿主机IP", "port": "1433", "user": "SA", "password": "<my-password>", "database": "TestDB" }
- 确保宿主机的防火墙没有拦截1433端口。
关于版本和连接库的疑问
- 不需要更换SQL Server版本,2022-latest版本兼容pymssql。
- pymssql可以正常使用,如果后续遇到兼容性问题,可考虑替换为
pyodbc(常用的SQL Server Python连接库),但当前问题的核心是网络连通性,和库或版本无关。
内容的提问来源于stack exchange,提问作者Minura Punchihewa
相关产品推荐
相关产品推荐

