You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内Python连接VirtualBox中Ubuntu本地SQL Server失败求解

问题排查与解决步骤

1. 优先修正替换IP后的语法报错

你替换IP后出现的Can't open lib 'xxx' : file not found报错,是ODBC驱动管理器无法解析连接字符串导致的,它把整个连接串识别成了驱动路径,首先检查你的连接字符串:

  • 确认符号无缺失、无拼写错误,结构正确:
connection_string = 'Driver={ODBC Driver 17 for SQL Server};Server=tcp:172.17.0.1,1433;UID=SA;PWD=替换为你的SA实际密码'
  • 确认引号、大括号、分号均为英文符号,没有中文符号混入。

2. 配置宿主机SQL Server访问权限

  • 开启SQL Server TCP/IP监听,绑定所有网卡端口:
sudo /opt/mssql/bin/mssql-conf set network.tcpport 1433
sudo /opt/mssql/bin/mssql-conf set network.ipaddress 0.0.0.0
sudo systemctl restart mssql-server
  • 放行宿主机防火墙1433端口:
sudo ufw allow 1433/tcp
sudo ufw reload
  • 宿主机本地验证连通性,确认172.17.0.1可访问SQL Server:
sqlcmd -S 172.17.0.1,1433 -U SA -P 替换为你的SA实际密码

上述命令可以正常登录则说明SQL Server配置正确。

3. 配置Docker容器网络

Linux环境下Docker默认不支持host.docker.internal域名解析,有两种可选方案:

  • 方案一:启动容器时添加host映射,继续使用域名访问
docker run --add-host=host.docker.internal:host-gateway 你的镜像名称
  • 方案二:使用host网络模式启动,直接共享宿主机网络栈
docker run --net=host 你的镜像名称

这种模式下连接字符串直接写Server=tcp:127.0.0.1,1433即可访问。

4. 容器内验证连通性

修改容器启动命令进入交互模式,先验证网络连通再执行脚本:

docker run -it --add-host=host.docker.internal:host-gateway 你的镜像名称 bash
# 进入容器后执行端口探测
nc -zv host.docker.internal 1433
# 确认端口通后再执行Python脚本
python3 -m test

内容的提问来源于stack exchange,提问作者Oleg Ivanytskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:45:04