VMware vctl部署SQL Server 2022容器无法连接求助
排查与解决vctl部署SQL Server 2022容器连接失败的问题
1. 修复证书路径缺失问题
日志里出现Error searching first file in /var/opt/mssql/security/ca-certificates: 3(The system cannot find the path specified.),虽提示TLS初始化成功,但路径缺失可能干扰登录前的协议握手:
- 进入容器创建缺失目录:
vctl exec -it mssql mkdir -p /var/opt/mssql/security/ca-certificates - 重启容器:
vctl restart mssql
2. 确认SQL Server服务初始化状态
容器显示运行不代表SQL Server已完成初始化:
- 查看详细启动日志,排查初始化失败信息:
vctl exec -t mssql tail -n 50 /var/opt/mssql/log/errorlog - 检查容器内SQL Server进程状态:
若vctl exec -t mssql ps aux | grep sqlservrsqlservr进程存在但未正常运行,需重新初始化容器。
3. 调整vctl网络配置
vctl网络模型与Docker存在差异,尝试以下调整:
- 用主机网络模式启动容器,规避端口映射潜在问题:
之后用主机IP或vctl rm -f mssql vctl run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=reallyStrongPwd123" -e "MSSQL_PID=Developer" --network host --name mssql --hostname mssql -d mcr.microsoft.com/mssql/server:2022-latestlocalhost连接1433端口。 - 直接使用容器内部IP连接,主机SSMS输入
192.168.106.146,1433尝试登录。
4. 验证SA密码合规性
SQL Server对密码复杂度要求严格,确认密码符合规则(至少8字符,含大小写、数字、特殊字符):
- 重置SA密码确保合规:
若执行失败,说明服务未就绪,需等待初始化完成。vctl exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "reallyStrongPwd123" -Q "ALTER LOGIN SA WITH PASSWORD='NewStrongPwd!123'"
5. 临时禁用TLS强制加密
证书问题可能导致TLS握手失败,尝试临时关闭强制加密:
- 进入容器修改配置:
vctl exec -it mssql echo "[network]" >> /var/opt/mssql/mssql.conf vctl exec -it mssql echo "force encryption = 0" >> /var/opt/mssql/mssql.conf - 重启容器后再尝试连接。
6. 更换特定版本镜像
尝试使用稳定版本镜像而非2022-latest,规避最新镜像兼容性问题:
vctl pull mcr.microsoft.com/mssql/server:2022-CU11-ubuntu-22.04 vctl rm -f mssql vctl run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=reallyStrongPwd123" -e "MSSQL_PID=Developer" -p 1433:1433 --name mssql --hostname mssql -d mcr.microsoft.com/mssql/server:2022-CU11-ubuntu-22.04
内容的提问来源于stack exchange,提问作者d2rkm4n
相关产品推荐
相关产品推荐

