我一直在努力让 SQL Server 2014 Express 通过 Windows 容器在 Windows Server 2016 TP5 中运行。
遵循此处的指南后,我可以使用 Sql Server Express 启动容器并附加数据库。
我的完整docker run
命令:
docker run -p 1433:1433 -v C:/temp/:C:/temp/ --env sa_password=xxxx --env attach_dbs="[{'dbName': 'Docker', 'dbFiles': ['C:\\temp\\Docker.mdf', 'C:\\temp\\Docker_log.ldf']}]" microsoft/msslq-server-2014-express-windows
但是,当尝试将主机 VM(Server 2016)上的 SSMS 连接到容器的 SQL Server Express 实例时,我无法弄清楚我缺少什么。
我在docker run
命令中使用 SQL Server 的默认端口 (1433)。
主机 VM 上的 Docker 版本是:1.12.1, build 23cf638
Window Server 2016 TP5 版本是:14300.rs1_release_sv.160907-0755
运行netstat -a
确认容器中正在监听 1433,但主机 VM 上没有监听 1433。
在容器运行docker ps
时运行确认端口 1433 映射为0.0.0.0:1433->1433/tcp
要通过主机 VM 上的 SSMS 连接到容器中的 SQL Server 实例,我正在使用sa
用户并使用我使用以下 powershell 检索到的容器的内部 IP 地址设置密码:
docker inspect --format "{{ .NetworkSettings.Networks.nat.IPAddress }}" <containerid>
不幸的是,SSMS 无法找到该实例,我不确定我做错了什么。