首页 > 解决方案 > 启动容器时,图像中的 Windows 服务无法自动启动

问题描述

请帮助我,我已经从 dotnet-framework-docker 作为基础图像构建了一个带有 Windows 服务的图像 Windows 服务器。我已将 (-StartupType Automatic) 设置为该服务,但是当容器在线时,该服务不会启动。这是 Dockerfile 中的命令

New-Service -Name $service_name -DisplayName $service_display_name -Description 'Domain Handlers' -BinaryPathName $service_path -StartupType Automatic

这是我从正在运行的容器中获得的该服务的状态。

ExitCode  : 0
Name      : Project-Dev
ProcessId : 0
StartMode : Auto
State     : Stopped
Status    : OK

我现在也有两个解决方案。首先,我想我可以制作一个脚本并将其设置为在 ENDTRYPOINT 或 CMD 中运行,该脚本将在容器在线时启动服务。其次,我看到服务是在本地系统权限下运行的,听说过LocalService和NetworkService,所以问题是我的服务是在本地服务下运行还是在网络服务下运行,那么它可以自动启动吗?(我想到了权限,可能因为权限而服务无法启动)所以,请帮助我摆脱这些东西

标签: windowscontainers

解决方案


我通过创建一个 onboot.service.ps1 脚本并将其设置在 Dockerfile 的 ENTRYPOINT 上解决了这个问题。

ENTRYPOINT ["powershell.exe", "C:\\Docker_onboot.services.ps1"]

该脚本中的内容是:

Start-Service -Name 'ServiceName'

我在 Amazone ECS 中运行容器。

希望这有帮助


推荐阅读