我一直致力于通过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无法找到该实例,而且我不确定我做错了什么。
答案 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地址。您现在可以使用此地址连接。