在Docker容器中安装Windows服务

时间:2019-01-08 09:00:47

标签: docker windows-services dockerfile docker-for-windows docker-desktop

当我尝试在我的dockerfile中将应用程序作为服务安装时,出现错误,指示installutil.exe在安装服务时显示用户名对话框。最初,我想在主机域上使用一个帐户,但是Windows的Docker似乎不支持Linux上可用的主机网络设置。

要解决此问题,我首先创建一个管理员用户,然后使用用户名和密码参数调用installutil。这给出了错误

  

帐户名无效或不存在,或密码为   对于指定的帐户名无效。

FROM microsoft/dotnet-framework
SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]

RUN New-LocalUser -Name "testuser" -Password (ConvertTo-SecureString -AsPlainText "Stackoverflow1234!" -Force) -FullName "Test.User" -Description "LocalAdministrator"
RUN Add-LocalGroupMember -Group administrators -Member  adapteruser -Verbose

RUN New-Item -Path "C:/dev" -ItemType directory

WORKDIR /dev

COPY ".\dev" "C:\dev"

RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" /username=testuser /password=Stackoverflow1234! /LogToConsole=true /ShowCallStack myapp.exe

我也尝试过:

RUN net user /add testuser Stackoverflow1234!
RUN net localgroup administrators testuser /add
RUN net user

我已经审查了这个类似的问题: Dockerizing a Windows Service Docker for Windows

1 个答案:

答案 0 :(得分:0)

要使用新用户,我必须在用户名中添加“。\”(对于本地计算机):

RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" /username=.\testuser /password=Stackoverflow1234! /LogToConsole=true /ShowCallStack myapp.exe