Есть ли способ подключиться через удаленный рабочий стол к работающему контейнеру Windows Server? - PullRequest
0 голосов
/ 19 января 2019

Я хочу запустить старое приложение .NET в контейнере Docker Windows Server (https://hub.docker.com/r/microsoft/windowsservercore/).

Все было бы легко, если бы это приложение не требовало пользовательского интерфейса. Его пользовательский интерфейс делает много вещей иэто не может быть сделано через командную строку или другой API.

По сути, идеальным было бы достичь этого работающего контейнера через RDP.

Насколько я понимаю, это не более, чем сервис(TermService) работает на определенном порте TCP (3389 является портом по умолчанию).

Но похоже, что 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 работает хорошо. Это команда, которую я использую для отображения спискаervices.

Get-Service

Когда я перечисляю открытые порты TCP, я вижу, что прослушивается 3389.Это команда, которую я использую, чтобы показать открытые порты.

netstat -an

Когда я пытаюсь подключиться к контейнеру через мой клиент удаленного рабочего стола, все выглядит нормально при запуске.

  • Itзапрашивает у меня имя хоста.
  • Затем вводится имя пользователя и пароль.
  • Если я ввожу неверные учетные данные, он говорит мне «Неправильные учетные данные», поэтому связь с сервером установлена.
  • Если я введу хорошие учетные данные, ничего не произойдет.Нет сообщений об ошибках вообще, но нет и экрана дисплея ...

Я действительно не знаю, генерируются ли журналы где-то или нет.

Я был бы в порядке, если бы вместоRDS, что-то вроде TigerVNC работало.Я никогда раньше не пробовал этот инструмент, но кажется, что он может справиться с этой задачей.

Как бы вы управляли приложением с графическим интерфейсом, работающим в контейнере Windows?

...