无法连接到主机VM上的SQL Server Express容器

时间:2016-09-21 22:19:47

标签: docker sql-server-express windows-server-2016

我一直致力于通过Windows Containers在Windows Server 2016 TP5中运行SQL Server 2014 Express。

遵循指南here后,我可以使用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,但是1433在主机VM上 未被侦听。

在容器运行时运行docker ps确认端口1433已映射为0.0.0.0:1433->1433/tcp

要使用sa用户通过主机VM上的SSMS连接到容器中的SQL Server实例,并使用以下powershell检索的容器的内部IP地址设置密码:

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

不幸的是,SSMS无法找到该实例,而且我不确定我做错了什么。

2 个答案:

答案 0 :(得分:2)

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

从此命令获取容器IP:

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

服务器名称:&#34; ip&#34;,&#34; port&#34; \&#34; instancename&#34;工作,并能够在主机VM上使用sqlcmd和SSMS。

答案 1 :(得分:0)

您可以为此泊坞窗设置IP地址,并尝试连接此终端:

{{1}}

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