适用于:Windows Server 2025、Windows Server 2022、Windows Server 2019
在典型配置中,容器通常只分配一个组托管服务帐户(gMSA),用于当容器计算机帐户尝试对网络资源进行身份验证时使用。 这意味着,如果你的应用需要使用 gMSA 标识,则需要以 本地系统 或 网络服务 运行。 如果希望将容器中的服务或应用程序作为与容器计算机帐户不同的标识运行,还可以使用其他 gMSA 进行配置。
将 IIS 应用池作为网络服务运行
如果要在容器中托管 IIS 网站,则利用 gMSA 只需将应用池标识设置为 网络服务。 可以通过添加以下命令在 Dockerfile 中执行此操作:
RUN %windir%\system32\inetsrv\appcmd.exe set AppPool DefaultAppPool -'processModel.identityType':NetworkService
如果以前为 IIS 应用池使用了静态用户凭据,请考虑 gMSA 作为这些凭据的替代项。 可以在开发、测试和生产环境之间更改 gMSA,IIS 会自动选取当前标识,而无需更改容器映像。
以网络服务的形式运行 Windows 服务
如果容器化应用作为 Windows 服务运行,则可以将服务设置为在 Dockerfile 中以 网络服务 运行:
RUN sc.exe config "YourServiceName" obj= "NT AUTHORITY\NETWORK SERVICE" password= ""
将任意控制台应用作为网络服务运行
对于未在 IIS 或 Service Manager 中托管的通用控制台应用,通常最简单的方法是将容器作为 网络服务,以便应用自动继承 gMSA 上下文。 此功能自 Windows Server 版本 1709 起提供。
将以下行添加到 Dockerfile,使其默认作为网络服务运行:
USER "NT AUTHORITY\NETWORK SERVICE"
还可以使用 docker exec
一次性连接到作为网络服务的容器。 如果解决正在运行的容器中的连接问题(当容器通常不作为网络服务运行时),这会特别有用。
# Opens an interactive PowerShell console in the container (id = 85d) as the Network Service account
docker exec -it --user "NT AUTHORITY\NETWORK SERVICE" 85d powershell
相关内容
除了配置应用之外,还可以使用 gMSA 来:
如果在安装过程中遇到任何问题,请查看我们的 故障排除指南,其中包含可能的解决方案。