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

我一直在努力通过Windows Containers获得在Windows Server 2016 TP5中运行的SQL Server 2014 Express。

在遵循这里的指导之后,我可以用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。

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

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

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

不幸的是,SSMS无法find实例,我不确定我做错了什么。

事实certificate,当从主机虚拟机连接时,我需要指定端口以及IP。 我不认为我需要这样做,因为我使用默认的SQL Server端口。

从此命令获得容器IP:

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

服务器名称:“IP”,“端口”\“实例名称”工作,并能够在主机虚拟机sqlcmd和SSMS。

你可以为这个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地址。 您现在可以使用此地址连接到。

Interesting Posts