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

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

我一直在努力通过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/

相关文章:

azure-storage - Azure存储模拟器无法使用 “The database '初始化AzureStorageEmulatorDb5 7' does not exist”

null - SQL Server 外键 "On Delete Set Null "约束不起作用

docker - 将 docker windows 容器从 CI 部署到 Windows Server 2016

windows - 如何从容器内关闭主机?

docker - 无法使用 docker-compose 创建 kafka 主题

sql - 当我尝试将项目插入我的数据库时,它说 ',' 附近的语法不正确?

docker - Docker Nginx安装 “Are you trying to mount a directory onto a file (or vice-versa)?”

docker - Windows Server 2016 上的容器到容器访问 Windows 容器问题

docker - 如何在 Jenkins 管道中使用多个 docker 存储库

php - 尝试将 libxslt 添加到 Docker 容器