Docker托管MSSQL连接失败求助:按官方教程操作仍无法连接
首先得指出你启动命令里的核心问题:你添加-it和/bin/bash的初衷是防止容器自动停止,但这个操作覆盖了MSSQL容器的默认启动命令——原本容器启动后会自动运行SQL Server服务,现在你强制让容器进入bash交互终端,导致SQL Server根本没启动,这肯定连不上。
下面是一步步的排查和修复方案:
第一步:修复容器启动逻辑,让SQL Server正常运行
先停止并删除现有容器:docker stop mssql docker rm mssql重新启动容器,去掉
-it和/bin/bash,如果担心容器意外停止,可以加--restart always参数保证容器退出后自动重启:docker run -e 'ACCEPT_EULA=Y' --name mssql -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --restart always -d microsoft/mssql-server-linux:latest验证容器状态:
docker ps看到容器状态为
Up就说明启动成功了。第二步:确认容器内SQL Server服务正常运行
如果容器启动了但还是连不上,进入容器查看服务状态或日志:# 查看SQL Server版本(验证服务可调用) docker exec -it mssql /opt/mssql/bin/sqlservr --version # 查看容器日志,排查启动报错 docker logs mssql日志里如果出现密码复杂度相关的错误,说明你设置的
SA_PASSWORD不符合要求(需要至少8位,包含大小写、数字、特殊字符)。第三步:验证本地网络连通性
在Windows PowerShell里测试1433端口是否开放:Test-NetConnection localhost -Port 1433如果显示
TcpTestSucceeded : True说明端口映射正常。如果失败,检查Windows防火墙/杀毒软件是否拦截了1433端口,或者容器启动命令里的端口映射是否写错(比如-p 1433:1433是否正确)。第四步:正确使用sqlcmd连接
确保sqlcmd的命令格式正确,比如:sqlcmd -S localhost,1433 -U SA -P yourStrong(!)Password如果你本地已经装了SQL Server占用了1433端口,可以把容器端口映射改成其他端口(比如
-p 1434:1433),连接时用localhost,1434。
内容的提问来源于stack exchange,提问作者csamleong




