如何将基于.NET Framework运行时镜像的Docker加入Windows域?
Windows容器加域及使用域资源解决方案
结论
普通Windows容器不支持直接加入Active Directory域,这是Windows容器的原生设计限制,但是你完全可以通过官方推荐的方案实现使用domain\user格式域账号、访问域资源的需求。
具体实现方案(微软官方推荐)
使用组托管服务账号(gMSA) 方案,无需将容器加入域即可实现域资源访问,适配你当前使用的.NET Framework runtime Windows容器镜像,无需修改应用代码:
- 第一步:在域控制器上创建gMSA账号,并为运行容器的Windows宿主机授予调用该gMSA的权限
- 第二步:在宿主机上使用
New-CredentialSpecPowerShell命令生成gMSA对应的凭证规范JSON文件 - 第三步:启动容器时添加指定参数即可,示例命令如下:
docker run -d --security-opt "credentialspec=file://你的凭证文件名.json" mcr.microsoft.com/dotnet/framework/runtime:你的标签
- 配置完成后,容器内的应用进程会以gMSA身份运行,原生支持识别
domain\user格式的域账号、发起域认证、访问域内共享、AD资源等所有你需要的域相关能力。
为什么不支持直接加域
Windows容器的生命周期是临时的,销毁重建后计算机标识会完全重置,如果允许直接加域会在域控制器内生成大量无效的孤儿计算机账号,因此微软从底层限制了普通Windows容器的加域能力,不建议尝试通过修改注册表、手动执行netdom join等非常规方式操作,大概率会失败或出现认证异常、域资源访问不稳定的问题。
内容的提问来源于stack exchange,提问作者ZedZip
相关产品推荐
相关产品推荐

