MacBook M1上Parallels虚拟机SSMS连接Docker中SQL Server失败求助
MacBook M1下Docker Azure SQL Edge无法被Parallels Win11虚拟机连接的解决方法
问题背景
- 设备:MacBook M1
- Docker部署
mcr.microsoft.com/azure-sql-edge:latest容器,使用的Docker Compose配置如下:
version: "3.9" services: mssql: image: mcr.microsoft.com/azure-sql-edge:latest command: /opt/mssql/bin/sqlservr environment: ACCEPT_EULA: "Y" SA_PASSWORD: ${SAPassword} stdin_open: true container_name: sqlserver hostname: sqlserver network_mode: host ports: - 1433:1433
- 同一设备上Parallels运行的Win11虚拟机安装了SSMS,尝试以
sqlserver作为服务器名、sa账号登录时,报错:
A network-related or instance-specific error occurred while establishing a connection to SQL Server
排查与解决步骤
- 调整Docker网络配置
M1 Mac的Dockerhost网络模式无法直接被Parallels虚拟机访问,改用默认桥接网络即可。修改Docker Compose,移除network_mode: host(hostname、stdin_open、command均可省略,镜像默认配置已满足启动需求):
version: "3.9" services: mssql: image: mcr.microsoft.com/azure-sql-edge:latest environment: ACCEPT_EULA: "Y" SA_PASSWORD: ${SAPassword} container_name: sqlserver ports: - "1433:1433"
修改后重启容器:
docker-compose down && docker-compose up -d
- 获取Mac的局域网IP
在Mac终端执行以下命令获取本地IP(Wi-Fi接口通常为en0,有线连接替换为en1):
ipconfig getifaddr en0
输出示例:192.168.1.105
使用Mac IP在SSMS中连接
在Win11虚拟机的SSMS中,服务器名称填写[你的Mac局域网IP],1433(例如192.168.1.105,1433),输入sa账号和设置的SA_PASSWORD即可完成连接。验证防火墙设置
- Mac端:打开「系统设置」-「网络」-「防火墙」,确保Docker被允许接收传入连接,或临时关闭防火墙测试连接。
- Win11端:确认防火墙允许SSMS发起 outbound 连接到1433端口。
- 确认容器服务状态
在Mac终端执行docker ps,确认sqlserver容器处于Up状态;执行docker logs sqlserver,查看日志中是否包含SQL Server is now ready for client connections.,确保数据库服务正常启动。
内容的提问来源于stack exchange,提问作者chenny
相关产品推荐
相关产品推荐

