我想在码头窗口服务器容器(https://hub.docker.com/r/microsoft/windowsservercore/)中运行一个旧的https://hub.docker.com/r/microsoft/windowsservercore/应用程序。
如果这个应用程序不需要UI,那么一切都会很简单。它的UI做了很多事情,而这些事情不能通过命令行或其他API来完成。
基本上,最好的办法是通过RDP到达这个运行中的容器。
据我所知,它不过是一个运行在某个TCP端口上的服务(TermService) (3389是默认的)。
但是TermService似乎没有运行在微软/windowsservercore容器中。
我找到了一篇文章,展示了如何激活它:https://withinrafael.com/2018/03/09/using-remote-desktop-services-in-containers/
基本上,我保留了同一个Dockerfile,只是更改了一些凭据。
#escape=`
FROM microsoft/windowsservercore:1709_KB4074588
RUN net user /add jerome
RUN net user jerome aDifficultPassword
RUN net localgroup "Remote Desktop Users" jerome /add
RUN net localgroup "Administrators" jerome /add
RUN cmd /k reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v TemporaryALiC /t REG_DWORD /d 1我使用以下命令启动容器:
docker run -it -p3389:3389 myimage powershell当我连接到容器并输入一些powershell命令来列出正在运行的服务时,我可以看到TermService运行良好。这是我用来列出服务的命令。
Get-Service当我列出打开的TCP端口时,我可以看到3389被监听。这是我用来显示打开的端口的命令。
netstat -an当我试图通过我的远程桌面客户端连接到容器时,事情一开始似乎还不错。
我真的不知道是否在某个地方生成了日志。
如果像TigerVNC这样的东西可以代替RDS,我会没事的。我以前从未试过这个工具,但它似乎能胜任这项工作。
如何控制运行在windows容器中的GUI应用程序?
发布于 2019-10-14 22:44:37
您可以在事件查看器中找到RDP客户机的日志:“应用程序和服务Logs"\Microsoft\Windows\TerminalServices-ClientActiveXCore.”。我要说的是:
原因2是客户端关闭会话。
我的偏执狂告诉我,微软回去修补了这个图像,以防止人们使用RDP与码头,但谁知道,也许我们只是遗漏了一些明显的东西。
https://stackoverflow.com/questions/54267192
复制相似问题