Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 有没有办法通过远程桌面连接到正在运行的Windows Server容器?_Docker_Remote Desktop_Windows Server_Rds_Docker For Windows - Fatal编程技术网

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

Docker 有没有办法通过远程桌面连接到正在运行的Windows Server容器?,docker,remote-desktop,windows-server,rds,docker-for-windows,Docker,Remote Desktop,Windows Server,Rds,Docker For Windows,我想在docker windows server容器()中运行旧的.NET应用程序 如果这个应用程序不需要UI,一切都会变得简单。它的UI做了很多事情,而这些事情不能通过命令行或其他API来完成 基本上,完美的做法是通过RDP访问这个正在运行的容器 据我所知,它只不过是在某个TCP端口(3389是默认端口)上运行的服务(TermService) 但TermService似乎没有在microsoft/windowsservercore容器中运行 我发现一篇文章显示了如何激活它: 基本上,我保留了相

我想在docker windows server容器()中运行旧的.NET应用程序

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

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

据我所知,它只不过是在某个TCP端口(3389是默认端口)上运行的服务(TermService)

但TermService似乎没有在microsoft/windowsservercore容器中运行

我发现一篇文章显示了如何激活它:

基本上,我保留了相同的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
当我尝试通过我的远程桌面客户端连接到容器时,一开始一切似乎都正常

  • 它向我要主人
  • 然后输入用户名和密码
  • 如果我输入了错误的凭据,它会告诉我“错误的凭据”,因此与服务器的通信良好
  • 如果我输入了好的凭证,什么都不会发生。没有任何错误消息,但也没有显示屏幕
我真的不知道日志是否在某个地方生成

如果不是RDS,而是像TigerVNC这样的东西在工作,我会很好。我以前从未尝试过这个工具,但它似乎可以胜任这项工作


如何控制在windows容器中运行的GUI应用程序?

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

  • 客户端已建立到服务器的多传输连接
  • RDPClient_SSL:响应TSSSLeventValidState(错误代码0x8000FFFF),从TsSslStateDisconnected转换到TsSslStateDisconnected时遇到错误

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

  • 原因2是客户端关闭了会话


    我的偏执狂告诉我,微软回去修补了这张图片,以防止人们在docker上使用RDP,但谁知道呢,也许我们只是缺少了一些明显的东西。

    windowsservercore:latest
    上,甚至没有任何东西在端口3389上监听……你好@FlorianKoch你能让它工作吗?我正在Windows server 2019 Docker容器上尝试同样的操作,但没有任何运气。@KiranHegde遗憾的是,没有,这似乎是微软明确地不可能做到的。“远程桌面和容器存在一些问题,他们不打算支持这种情况(至少目前是这样)@FlorianKoch,谢谢。”。有没有一种方法可以显示安装在主机系统容器上的应用程序的GUI?例如,如果容器上安装了Visual Studio,我确实希望在主机系统上打开它。据我所知,这对于使用X服务器的Linux容器是可能的。你知道Windows容器有类似的东西吗?@KiranHedge我不认为有这样的东西,至少我找不到。对于linux系统,您可以打开一个端口将X从容器中导出,就像您对ssh-X会话所做的那样。您需要一个类似的WIndows解决方案。