Я хочу запустить старое приложение .NET в контейнере сервера Windows docker (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 работает нормально. Это команда, которую я использую для вывода списка сервисов.
Get-Service
Когда я перечисляю открытые порты TCP, я вижу, что прослушивается 3389. Это команда, которую я использую для отображения открытых портов.
netstat -an
Когда я пытаюсь подключиться к контейнеру через клиент удаленного рабочего стола, при запуске все выглядит нормально.
- Просит у меня хозяина.
- Затем для имени пользователя и пароля.
- Если я ввожу неправильные учетные данные, он говорит мне «Неправильные учетные данные», поэтому связь с сервером есть.
- Если я ввожу хорошие учетные данные, ничего не происходит. Никаких сообщений об ошибках, но и экрана тоже нет...
Я действительно не знаю, генерируются ли журналы где-то или нет.
Я был бы в порядке, если бы вместо RDS работало что-то вроде TigerVNC. Я никогда раньше не пробовал этот инструмент, но кажется, что он может справиться со своей задачей.
Как бы вы управляли приложением с графическим интерфейсом, работающим в контейнере Windows?
windowsservercore:latest
на порту 3389 даже ничего не прослушивается... - person Florian Koch   schedule 18.04.2019