14

मैं विंडोज सर्वर 2016 TP4 पर एक विंडोज कंटेनर में दृश्य स्टूडियो रिमोट डीबगर को चलाने के लिए प्रयास करें। चूंकि यह एक कंटेनर के अंदर चलता है, इसलिए कोई यूआई नहीं है।विंडोज कंटेनर में दृश्य स्टूडियो रिमोट डीबगर चल रहा है (डोकर प्रबंधित)

.\msvsmon.exe /nostatus /silent /nosecuritywarn /nofirewallwarn /noclrwarn /port 4020 

मैं व्यवस्थापक उपयोगकर्ता (NT अधिकार \ प्रणाली) के रूप में ऊपर को क्रियान्वित कर रहा हूँ:

मैं के माध्यम से दूरस्थ डीबगर को चलाने के लिए प्रयास करें। यह होस्ट कंप्यूटर पर ठीक काम करता है, लेकिन यह कंटेनर के अंदर काम नहीं करता है। विंडोज इवेंट लॉग निम्न त्रुटि घटना दिखाता है।

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's 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's 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 मेरे 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 inspect 6d2d071453c5 चलाने के लिए, मैं इस उत्पादन में मिलता है:

"Config": { 
    "Hostname": "6d2d071453c5", 
    "Domainname": "", 

लेकिन फिर भी, कंटेनर के अंदर, मैं टाइप "hostname" कमांड लाइन में और मिलती है:

PS C:> hostname 
test2016 

यह इस समय विंडोज सर्वर 2016 टीपी 4/विंडोज कंटेनर के लिए विशिष्ट बग है। होस्टनाम test2016 (कंटेनर होस्ट का नाम, मेरा वास्तविक भौतिक Win2016 सर्वर) नहीं होना चाहिए लेकिन कंटेनर आईडी (6d2d071453c5) होना चाहिए। कम से कम, यह मेरा अपेक्षित व्यवहार होगा और यह भी मामला है जब मैं किसी अन्य कंटेनर को चलाता हूं, यानी एक उबंटू कंटेनर, विंडोज़ पर जिसके लिए वीएम की आवश्यकता होती है। मैंने बस इसे फिर से चेक किया।

फिर भी, इस मुद्दे को नाकाम करने के लिए, मैं मेजबान फ़ाइल को समायोजित बताया:

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. 

मैं नहीं दिख रहा है क्या मानकों से किसी के साथ गलत क्या है, के साथ मदद फ़ाइल है कि सभी सूचीबद्ध करता है के अनुसार पैरामीटर और विकल्प। कंटेनर होस्ट के अंदर नहीं, एक ही कमांड कंटेनर होस्ट पर ठीक काम करता है।

क्या किसी ने कंटेनर के अंदर काम करने के लिए रिमोट डीबगर प्राप्त किया है?

======= अद्यतन ======

के रूप में नीचे का सुझाव, मैं होस्ट नाम पैरामीटर की कोशिश की। मुझे अब ईवेंट लॉग में कोई त्रुटि दिखाई नहीं दे रही है, लेकिन मुझे यह भी नहीं लगता कि बंदरगाह 4020 पर कुछ भी सुन रहा है।

निर्देशिका में कंटेनर के अंदर निष्पादित सी: \ प्रोग्राम फ़ाइलें \ माइक्रोसॉफ्ट विजुअल स्टूडियो 14.0 \ Common7 \ आईडीई \ रिमोट डीबगर \ 64:

> 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" 

> 
+0

होस्टनाम के संबंध में जोड़ा गया डॉकर समस्या: https://github.com/docker/docker/issues/21762 –

+0

होस्टनाम समस्या सर्वर 2016 टीपी 4 में एक ज्ञात विंडोज कंटेनर समस्या प्रतीत होती है, https://github.com देखें/डोकर/डोकर/मुद्दों/21762 # issuecomment-205,904,128। हालांकि, मेरा मूल सवाल बनी हुई है। –

+0

होस्टनाम समस्या सर्वर 2016 टीपी 5 में हल हो गई है, हालांकि, अभी भी रिमोट डीबगर को इस पर काम करने के लिए नहीं मिला है। –

उत्तर

1

आप होस्ट नाम msvsmon/होस्टनाम विकल्प का उपयोग कर "हार्डकोड" करने की कोशिश किया?

msvsmon प्रलेखन के अनुसार:। "/ होस्टनाम hostname_value करने के लिए निर्दिष्ट होस्ट नाम मूल्य, या आईपी पते मूल्य का उपयोग कर नेटवर्क पर सुनने दूरस्थ डीबगर निर्देश देता एकाधिक नेटवर्क कार्ड के साथ एक कंप्यूटर पर, या एक से अधिक सौंपा डीएनएस मेजबान के साथ नाम, इस विकल्प का उपयोग प्रतिबंधित करने के लिए किया जा सकता है, इनमें से कौन सा रिमोट डीबगिंग की अनुमति देगा। उदाहरण के लिए, एक सर्वर के पास इंटरनेट का सामना करने वाला पता हो सकता है, और एक आंतरिक पता हो सकता है। '/ hostname private_ip_address' का उपयोग करके, दूरस्थ डिबगिंग के माध्यम से उपलब्ध नहीं होगा इंटरनेट का सामना पता। "

+0

उपरोक्त मेरे अद्यतन ओपी देखें। –

1

ठीक है, यहां वास्तव में स्पष्ट रूप से बाहर फेंक रहा है। अपनी पोस्ट से, आदेश

"। \ Msvsmon.exe/nostatus/मूक/nosecuritywarn/nofirewallwarn/noclrwarn/पोर्ट 4020/होस्टनाम विन-DE6U4068NAF"

सिर्फ प्रिंट होगा कि ठीक उसी शक्तिशक्ति में स्ट्रिंग। यह वास्तव में डीबगर शुरू नहीं करता है। इको आउटपुट यह दिखाता है। (मैं इसमें बहुत अधिक पढ़ रहा हूं)

तो /nofirewallwarn केवल फ़ायरवॉल चेतावनी (वाईएमएमवी) द्वारा अवरोधित अवरुद्ध करता है, और वास्तव में फ़ायरवॉल से नहीं मिलता है। क्या आपने इसे /prepcomputer से पहले चलाया है?

क्या आपने /anyuser को बाईपास ऑथ करने की कोशिश की है और केवल टीसीपी को काम करने की अनुमति है?

क्या msvsmon वास्तव में सही नेटवर्क इंटरफ़ेस से बंधे हैं? कभी-कभी, लूपबैक एडाप्टर से बाध्य होने का अर्थ है कि यह केवल स्थानीय रूप से पहुंच योग्य हो सकता है। जब आप netstat यह सभी इंटरफेस (0.0.0.0) पर सुनना दिखाता है?

क्या आपने इसे /service विकल्प के साथ सेवा के रूप में चलाने का प्रयास किया है? हालांकि कुछ और गॉथ हो सकते हैं। मुझे आमतौर पर मैदान में काम करने में मुश्किल होती है।

+0

उत्तर के लिए धन्यवाद। मेरे पास यह पर्यावरण नहीं है और अब चल रहा है, इसलिए मैं अभी और इसका परीक्षण नहीं कर सकता। इस बीच परियोजना अप्रचलित हो गई है। मुझे लगता है कि मैंने इसे कॉलन के बिना भी चलाया है, लेकिन यह सुनिश्चित नहीं है कि इस तरह मैंने इसे होस्ट करने के लिए मेजबान पर भी भाग लिया है (मेरी पहली कमांड लाइन देखें)। क्या आपको अंदर चलाने के लिए डीबगर मिला आपके पक्ष में कंटेनर? चूंकि आपने उल्लेख किया है "मुझे आमतौर पर मैदान में काम करने में मुश्किल होती है।" –

+0

मैंने इसे एक वीपीएन (टीएपी) पर विंडोज सर्वर हेडलेस में काम करने की कोशिश की है, और ये थे कुछ चीजें जो मैंने कोशिश की थीं। – Asti

+0

मेरी माफ़ी, माथीस। मैंने अभी मूल पोस्टिंग की तारीख देखी है। – Asti

0

डीबग करने के लिए आपको छवि में दूरस्थ उपकरण इंस्टॉल करने, सामान्य के अनुसार कंटेनर चलाने की आवश्यकता होगी, और फिर docker exec का उपयोग कर रिमोट डीबगर शुरू करें।

कमांड लाइन इस प्रकार है:

docker exec -it <container id/name> "C:\Program Files\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe" /nostatus /silent /noauth /anyuser /nosecuritywarn

मैं a blog post में और अधिक विस्तार मिल गया है, और हाँ, अपने स्थानीय देव मशीन पर प्रमाणन को बंद करने के लिए कुछ जोखिम ले करता है (चाहे कितने भी छोटे) लेकिन यह आपको कम से कम एक विचार देना चाहिए कि इसे कैसे किया जाए। जिस तरह से आप चाहते हैं उसे काम करने के लिए आप कमांड लाइन विकल्पों को हमेशा ट्विक कर सकते हैं।

0

मैं काम करने के लिए इस क्रम में पाया गया:

PS C:\> start-service msvsmon150 
PS C:\Program Files\Microsoft Visual Studio 15.0\Common7\IDE\Remote Debugger\x64> .\msvsmon /noauth /anyuser /silent 

शुरू सेवा आदेश के बारे में कैसे सेवा जब एक Windows 10 में चलना शुरू नहीं करेंगे एक त्रुटि बाहर गोज़ जाएगा विंडोज कंटेनर की मेजबानी की। हालांकि, दूसरे कमांड में प्रवेश करने के बाद, बंदरगाह नेटस्टैट-एब में अवरुद्ध के रूप में दिखाई देते हैं और विजुअल स्टूडियो 2017 डीबगर इकाई को स्नीफ कर सकते हैं।

संबंधित मुद्दे