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

Docker 无法连接到主机VM上的SQL Server Express容器,docker,sql-server-express,windows-server-2016,Docker,Sql Server Express,Windows Server 2016,我一直在努力通过Windows容器让SQL Server 2014 Express在Windows Server 2016 TP5中运行 在遵循这些指导原则之后,我能够用SQLServerExpress启动一个容器并附加一个数据库 我的完整docker run命令: docker run -p 1433:1433 -v C:/temp/:C:/temp/ --env sa_password=xxxx --env attach_dbs="[{'dbName': 'Docker', 'dbFiles

我一直在努力通过Windows容器让SQL Server 2014 Express在Windows Server 2016 TP5中运行

在遵循这些指导原则之后,我能够用SQLServerExpress启动一个容器并附加一个数据库

我的完整
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)上的SSM连接到容器的SQL Server Express实例时,我无法确定缺少了哪一部分

我在我的
docker run
命令中使用SQL Server的默认端口(1433)

主机VM上的Docker版本为:
1.12.1,build 23cf638

Window Server 2016 TP5版本为:
14300.rs1\u release\u sv.160907-0755

运行
netstat-a
确认1433正在容器中被监听,但1433没有在主机VM上被监听

在容器运行时运行
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>
docker-inspect——格式为“{.NetworkSettings.Networks.nat.IPAddress}”

不幸的是,SSMS无法找到该实例,我不确定我的操作是否有误。

您可以为此docker设置一个IP地址,然后尝试与此docker连接:

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

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

从以下命令获取容器IP:

docker-inspect——格式为“{.NetworkSettings.Networks.nat.IPAddress}”


服务器名称:“ip”,“端口”\“instancename”工作正常,能够在主机VM上同时使用sqlcmd和SSMS进入。

当我尝试时,我收到以下错误:
来自守护程序的错误响应:无法在网络nat上创建端点:Windows不支持nat设置中的主机ip地址。
您能给出此命令的输出吗
docker inspect--format“{.NetworkSettings.Networks}}”
会给你类似的东西,
map[bridge:…
(在我的例子中是bridge)结果是:
map[nat:0xc08237a0c0]
在riga:1 car:73+…ct--format“{.NetworkSettings.Networks.nat.IPAddress}”