如何使用SQL服务器docker容器的Windows身份validation

我已经通过了所有可以在网上find的用于构build基于Docker容器的应用程序的示例。 我想运行两个Docker容器中运行的两个服务:

  1. 运行ASP.NET的Windows容器
  2. 运行SQL Server的Windows容器

简单的工作和很多例子。 但是,在所有示例中,您需要使用SQL身份validation,并在运行SQL Server容器时提供硬编码的SA密码作为环境variables。 您还需要将SA密码硬编码到ASP.Net代码中的连接string中(或者以其他方式在configuration文件中提供)

底线在所有的例子中,密码是硬编码的地方。

在我们现在开发的大多数应用程序中,我们实际上使用Windows身份validation,或者使用分组托pipe服务帐户。 但据我所知,你不能添加一个Windows容器到域,因此SQL服务器不属于Windows域的一部分,所以我没有看到在这里使用Windows身份validation的方式。

那么是否有人可以用这种方式来硬编码密码呢?

我正在处理完全相同的问题。 这是我find的最完整的程序。 诀窍是使用gMSA。

但是,正如JanneRantala最后所说的,在尝试在数据库中添加新用户时遇到了同样的问题:

没有find消息15401,级别16,状态1,行3 Windows NT用户或组“YOUR_DOMAIN \ gmsa $”。 再次检查名称。

这是演练如何使其工作。 Windows容器演练

如果您的SQL也在容器中运行,这将无法工作,因为SQL Server本身必须是Active Directory的一部分才能使用GMSA帐户。

Windocks SQL Server容器中会自动启用Windows身份validation。 在这里看到更多的细节。 Windocks中创build的SQL Server容器是从Windows Server(2012 R2或2016)上已安装的默认SQL Service自动创build的SQL Server命名实例。 默认实例中的任何Windows帐户都将在容器实例中自动启用。