我一直在努力通过Windows容器在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,但是在主机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无法找到实例,并且我不确定自己在做什么错误。
最佳答案
事实证明,从主机VM连接时,我需要指定端口以及IP。我不认为我需要这样做,因为我使用的是默认的sql server端口。
通过以下命令获取容器IP:docker inspect --format "{{ .NetworkSettings.Networks.nat.IPAddress }}" <containerid>
服务器名称:“ip”,“port” \“instancename”起作用,并且能够与主机VM上的sqlcmd和SSMS一起使用。
关于docker - 无法连接到主机VM上的SQL Server Express容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627441/