Я пытаюсь запустить удаленный отладчик Visual Studio в Контейнере Windows на Windows Server 2016 TP4. Поскольку он работает внутри контейнера, пользовательский интерфейс отсутствует.
Я пытаюсь запустить удаленный отладчик с помощью:
.\msvsmon.exe /nostatus /silent /nosecuritywarn /nofirewallwarn /noclrwarn /port 4020
Я выполняю вышеуказанное как пользователь-администратор (nt authority\system). Это отлично работает на главном компьютере, но оно не работает внутри контейнера. Журнал событий Windows показывает следующее событие ошибки.
Msvsmon was unable to start a server named "`6D2D071453C5:4020`".
The following error occurred: The parameter is incorrect.
Завершить журнал событий:
Get-EventLog -LogName Application -EntryType Error | format-list
Index : 1718
EntryType : Error
InstanceId : 3221226473
Message : The description for Event ID '-1073740823' in Source 'Visual Studio Remote Debugger' cannot be found. The local computer may not have the necessary registry information or message DLL
files to display the message, or you may not have permission to access them. The following information is part of the event:'Msvsmon was unable to start a server named
'6D2D071453C5:4020'. The following error occurred: The parameter is incorrect.
View Msvsmon help for more information.'
Category : (0)
CategoryNumber : 0
ReplacementStrings : {Msvsmon was unable to start a server named '6D2D071453C5:4020'. The following error occurred: The parameter is incorrect.
View Msvsmon help for more information.}
Source : Visual Studio Remote Debugger
TimeGenerated : 05.04.2016 9:47:19 AM
TimeWritten : 05.04.2016 9:47:19 AM
UserName : NT AUTHORITY\SYSTEM
Я заметил одну проблему с именем хоста контейнера, но это можно исправить:
6D2D071453C5
- это id контейнера моего контейнера Windows (управление докере):
PS C:> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d2d071453c5 d9d15fbca6d7 "cmd /S /C 'C:\\myprg-" 6 days ago Up 3 days derrin
Обычно в Docker этот идентификатор контейнера также будет содержать имя хоста внутри/контейнера.
Итак, когда я запускаю docker inspect 6d2d071453c5
, я получаю это на выходе:
"Config": {
"Hostname": "6d2d071453c5",
"Domainname": "",
Но затем внутри контейнера введите "hostname
" в командной строке и получите:
PS C:> hostname
test2016
Это ошибка, характерная для Windows Server 2016 TP4/Windows Containers на данный момент.
Имя хоста не должно быть test2016
(имя хоста контейнера, мой фактический физический сервер Win2016), но идентификатор контейнера (6D2D071453C5
).
По крайней мере, это будет мое ожидаемое поведение, и это также происходит, когда я запускаю любой другой контейнер, то есть контейнер Ubuntu, в Windows, для которого требуется виртуальная машина. Я только что проверил его.
Тем не менее, чтобы обойти проблему, я настраиваю файл хоста, добавляя:
172.16.0.2 6d2d071453c5
Теперь я могу по-прежнему пинговать свое собственное имя хоста.
PS C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64> ping 6D2D071453C5
Pinging 6d2d071453c5 [172.16.0.2] with 32 bytes of data:
Reply from 172.16.0.2: bytes=32 time<1ms TTL=128
Reply from 172.16.0.2: bytes=32 time<1ms TTL=128
Тем не менее удаленный отладчик все еще не запускается и все еще говорит:
Msvsmon was unable to start a server named "`6D2D071453C5:4020`".
The following error occurred: The parameter is incorrect.
Я не вижу, что неправильно с любым из параметров, в соответствии с сопровождающим файлом справки, в котором перечислены все параметры и параметры. Сама же команда отлично работает на узле контейнера, а не внутри контейнера.
Кто-нибудь получил удаленный отладчик для работы внутри контейнера?
======= Обновление ======
Как показано ниже, я попробовал параметр hostname. Я больше не вижу ошибок в журнале событий, но я также не вижу, что что-то слушает порт 4020.
Выполняется внутри контейнера в каталоге C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\Удаленный отладчик \x64:
> hostname
WIN-DE6U4068NAF
> ".\msvsmon.exe /nostatus /silent /nosecuritywarn /nofirewallwarn /noclrwarn /port 4020 /hostname WIN-DE6U4068NAF"
.\msvsmon.exe /nostatus /silent /nosecuritywarn /nofirewallwarn /noclrwarn /port 4020 /hostname WIN-DE6U4068NAF
> netstat -ab | find "4020"
>