gpt4 book ai didi

docker - 有没有办法通过远程桌面连接到正在运行的 Windows Server 容器?

转载 作者:行者123 更新时间:2023-12-02 03:15:17 25 4
gpt4 key购买 nike

我想在 Docker Windows 服务器容器 ( https://hub.docker.com/r/microsoft/windowsservercore/ ) 中运行旧的 .NET 应用程序。

如果这个应用程序不需要 UI,一切都会很容易。它的 UI 做了很多事情,而这些事情不能通过命令行或其他 API 来完成。

基本上,完美的事情是通过 RDP 访问这个正在运行的容器。

据我了解,它无非是运行在某个 TCP 端口(默认为 3389)上的服务(TermService)。

但 TermService 似乎没有在 microsoft/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 应用程序?

最佳答案

您可以在事件查看器中找到 RDP 客户端的日志:“应用程序和服务日志”\Microsoft\Windows\TerminalServices-ClientActiveXCore。这是对我说的:

  1. 客户端已与服务器建立了多传输连接。
  2. RDPClient_SSL:从 TsSslStateDisconnected 转换到 TsSslStateDisconnected 以响应 TsSslEventInvalidState 时遇到错误(错误代码 0x8000FFFF)。

  3. RDP ClientActiveX 已断开连接(原因 = 2)

原因 2 是客户端关闭 session 。

我的偏执告诉我,微软回去修补了该镜像,以防止人们将 RDP 与 docker 一起使用,但谁知道呢,也许我们只是错过了一些明显的东西。

关于docker - 有没有办法通过远程桌面连接到正在运行的 Windows Server 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54267192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com