0

我们正在处理使用 docker 在 Windows Server 2016 容器中使用 gMsa 运行我们的应用程序的不兼容问题。我们使用 Windows Server 2019 作为主机和 hyper-v 隔离。

主机:Windows Server 2019 10.0.17763 容器:Windows 2016 10.0.14393(内部版本 1607)

具有以下基本图像的 dockerfile

来自 mcr.microsoft.com/dotnet/framework/runtime:4.6.2-windowsservercore-ltsc2016

来自 mcr.microsoft.com/windows/servercore:ltsc2016

dockerfile

码头工人撰写

码头工人撰写

  1. 应用图像
  2. Hyper-v 隔离
  3. IPv4
  4. gMsa 凭证规范
  5. l2bridge网络
  6. 工控机接口
  7. 子网
  8. 网关

根据微软的说法,只要使用 hyper-v 隔离,就可以在 Windows Server 2019 主机中运行 Windows Server 2016 容器。我们可以验证容器是否正在运行,因为它可以使用 docker-compose 构建和部署。

容器运行

使用 hyper-v 的 Microsoft 主机和容器兼容性

但是当试图运行应用程序时,它根本不运行。

我们使用我们可以找到的唯一官方 Microsoft 文档进行 gMsa 故障排除测试,该文档已经有 2 年的历史了(Troubleshoot gMSA for Windows containers | Microsoft Docs),结果如下

  1. 在主机中进行测试 a. 测试-ADServiceAccount i。真 B. 为正确的流量支持配置的防火墙规则
  2. 容器中的测试(gMsa 相关) gMsa 测试 (nltest)

nltest /sc_verify:pj16.loc 和 klist get krbtgt 在这种情况下总是失败(应用程序有 gMsa,并且使用了 hyper-v)

应用程序正常工作的唯一场景是不使用 hyper-v,但在这种情况下主机和容器操作系统必须匹配,这意味着 Windows Server 2019 主机与 Windows Server 2019 容器或 Windows Server 2016 主机与 Windows Server 2016 容器.

我们在互联网上找到了这个页面GitHub - plooploops/windows-containers-AD: Working with AD and Windows Containers看起来像一个团队的地方尝试做同样的事情,但结果相同,在下面的段落中说:

在我们的场景中,我们使用的是 Windows Server 2016 10.0.14393 build 1607,它比 1803 还要早。我们也不知道 1709 build 对应的服务器。

问题是:在 Windows Server 2019 主机和 Windows Server 2016 容器之间是否存在任何构建组合以使 gMsa 和 hyper-v 正确运行,或者确实不兼容,而针对这种特定场景的唯一解决方案是匹配操作系统和容器版本?

非常感谢您的帮助!

干杯,

雨果

4

0 回答 0