是否有可能在Docker中运行MSSQL-Linux?

时间:2017-07-25 22:40:12

标签: sql-server linux docker

我的部分工作涉及数据收集,以帮助调整可以转移到云的工作负载。这样做的一个要素就是能够在客户端环境中枚举SQL实例,以获得诸如“&; ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins ins这笔交易。"

随着SQL Server 2017的发布,我刚才在Linux容器上创建了一个SQL Server Enterprise 2017实例(使用this image),我在Windows 10上本地运行。我可以通过SSMS和SELECT @@ VERSION连接到实例以确认它是合法的,但我的问题是,是否可以在不知道连接字符串的情况下清点设备并找到SQL实例。

我尝试的事情:

- 在Windows 10上运行所以我相信这是通过Hyper-V支持的,当我尝试通过Hyper-V管理器连接到VM ​​Docker spun up时,无法获得任何接口(其中我想,因为Docker模拟应用程序而不是完整的虚拟机)

- 想要从Win10主机设备上执行sqlcmd -L并且看不到该实例(不要在Windows 10设备上安装SQL,而是运行它)

- 我可以通过docker ps找到docker镜像,然后执行exec -it到bash,并从那里使用sqlcmd,但是sqlcmd -L不会作为Linux中的选项列出。

来自主机设备的

-ipconfig显示了Docker的IP地址,但是它不会给我端口信息,因此我必须扫描所有感觉脏的端口。

我此刻有点茫然。如果我没有明确知道Docker容器正在运行MSSQL-Linux,那么有什么办法可以通过清点主机设备来识别它吗? (对不起,很长的帖子)

1 个答案:

答案 0 :(得分:0)

在我敲了一下之后,我发现了一个痛苦的解决方法:

使用以下内容连接到容器的bash:docker exec -it <container_name> "bash" 然后使用ps aux | grep sql列出所有sql进程。 MS映像在本地测试中显示为/ opt / mssql / bin / sqlservr。一旦识别出SQL,您就可以尝试使用来自ipconfig的Docker ip和来自docker ps

的端口连接到它

它并不优雅,但应该可以自动执行这些步骤,以便在一组未知设备中使用。

为了更好的替代方案,请稍等一下。