无法从一个Docker容器连接另一Docker容器中的MS SQL Server如何解决?
问题解决步骤
- 修正连接字符串的服务器地址错误
你当前配置的Server=mysql完全不符合实际部署情况,需要根据你的应用运行场景调整:- 如果应用和SQL Server都运行在同一自定义Docker网桥下,将连接字符串改为
Server=mssql,1433;Database=Test;User Id=sa;Password=123456789aBcD,和你启动SQL Server时定义的容器名--name mssql保持一致,注意SQL Server连接字符串中端口用逗号分隔,不是冒号 - 如果应用直接运行在宿主机没有容器化,将Server改为
Server=localhost,1433 - 如果应用容器和SQL Server容器都使用默认的bridge网络,无法直接通过容器名互访,需要先创建自定义网络
- 如果应用和SQL Server都运行在同一自定义Docker网桥下,将连接字符串改为
- 配置Docker网络确保互通
执行以下命令创建自定义Docker网络并将SQL Server容器加入:
启动应用容器时添加docker network create mssql-bridge docker network connect mssql-bridge mssql--network mssql-bridge参数,保证两个容器在同一网络下可互相解析。 - 验证SQL Server运行状态
执行docker ps检查mssql容器是否处于正常运行状态,如果容器异常退出,执行docker logs mssql查看启动日志排查问题,比如SA密码不符合复杂度要求、端口被占用都会导致启动失败。 - 额外验证项
- 你启动命令中声明要使用SQL Server 2017镜像,但实际拉取的是2019版本镜像,如果有版本要求可以替换对应的镜像标签,不影响正常连接逻辑
- 确认你已经在SQL Server实例中创建了
Test数据库,完成网络配置后如果还报错找不到数据库,需要手动创建对应库即可。
内容的提问来源于stack exchange,提问作者TestTestovich
相关产品推荐
相关产品推荐

