1

我一直在努力让 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 无法找到该实例,我不确定我做错了什么。

4

2 回答 2

2

事实证明,从主机 VM 连接时,我需要指定端口和 IP。我认为我不需要这样做,因为我使用的是默认的 sql server 端口。

从此命令获取容器 IP:

docker inspect --format "{{ .NetworkSettings.Networks.nat.IPAddress }}" <containerid>

服务器名称:"ip","port"\"instancename" 工作并且能够在主机 VM 上同时使用 sqlcmd 和 SSMS。

于 2016-09-22T13:18:44.350 回答
0

你可以为这个 docker 设置一个 IP 地址并尝试连接这个:

docker run -p 192.168.0.2: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

或任何适合您系统的 IP 地址。您现在可以使用此地址进行连接。

于 2016-09-22T05:20:04.510 回答