Docker و VMWare Workstation على نفس جهاز Windows

كانت المهمة بسيطة ، ضع Docker على الكمبيوتر المحمول الذي يعمل بنظام Windows ، والذي يحتوي بالفعل على حديقة حيوانات. تم تسليم حاويات Docker Desktop ، كل شيء على ما يرام ، ولكن اكتشف بسرعة أن محطة عمل VMWare توقفت عن تشغيل الأجهزة الافتراضية مع وجود خطأ:

VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.


نهض العمل ، هناك حاجة ماسة إلى الإصلاح




باستخدام Google ، تبين أن هذا الخطأ يحدث بسبب عدم توافق VMWare Workstation و Hyper-V على نفس الجهاز. المشكلة معروفة وهناك حل رسمي لبرنامج VMWare حول كيفية إصلاحها ، مع الإشارة إلى قاعدة معارف Microsoft Manage Windows Defender Credential Guard . الحل هو تعطيل حماية المدافع عن المدافع (ساعدت الفقرة 4 من قسم تعطيل حماية المدافع عن المدافع في Windows):

mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d

بعد إعادة التشغيل ، سيسألك Windows عما إذا كان من الممكن حقًا تعطيل Defender Credential Guard. نعم! وبالتالي ، ستعود محطة عمل VMWare إلى التشغيل العادي ، وسنكون في نفس المكان قبل تثبيت عامل الإرساء.

لم أجد أبدًا حلولًا للتوفيق بين Hyper-V و VMWare Workstation ، آمل أن يقوموا بتكوين صداقات في إصدارات جديدة.

طريق اخر


لقد تم ربط VMWare Workstation منذ فترة طويلة لأغراض مختلفة ، وحاولت الحصول على Hyper-V و VirtualBox ، لكن الوظيفة لم تفي بمهامي ، لذلك ما زلت جالسًا. اتضح أن هناك حلًا لكيفية الجمع بين VMWare و Docker و VSCode في بيئة عمل واحدة.

Docker Machine - يسمح لك بتشغيل Docker Engine على مضيف افتراضي والاتصال به عن بعد ومحليًا. وبالنسبة له هناك برنامج تشغيل التوافق مع VMWare Workstation ، رابط لـ GitHub

لن أعيد بشكل خاص تعليمات التثبيت ، فقط قائمة المكونات:

  1. Docker Toolbox ( تشمل آلة Docker )
  2. برنامج تشغيل محطة إرساء آلة VMware
  3. Docker سطح المكتب

نعم ، للأسف ، هناك حاجة أيضًا إلى Docker Desktop. إذا قمت بهدمها ، فقم بتثبيتها مرة أخرى ، ولكن هذه المرة قم بإزالة مربع الاختيار حول إجراء تغييرات على نظام التشغيل حتى لا يتم كسر برنامج VMWare Workstation مرة أخرى.

أريد أن أشير على الفور إلى أن كل شيء يعمل بشكل جيد من مستخدم بسيط ، وستطلب برامج التثبيت تصعيدًا للحقوق عندما يحتاجون إلى ذلك ، ولكن يتم تنفيذ جميع الأوامر الموجودة في سطر الأوامر والنصوص البرمجية من المستخدم الحالي.

نتيجة لذلك ، قام الفريق بما يلي:
$ docker-machine create --driver=vmwareworkstation dev

من Boot2Docker سيتم إنشاء مطور افتراضي بداخله سيكون Docker.

يمكنك إرفاق هذا الجهاز الظاهري بالواجهة الرسومية لـ VMWare Workstation عن طريق فتح ملف vmx المقابل. ولكن هذا ليس ضروريًا ، لأن VSCode سيحتاج الآن إلى تشغيله بواسطة PowerShell باستخدام نص برمجي (لسبب ما ، تبين أن آلة عامل الميناء و docker-machine-driver-vmwareworkstation في مجلد الحاوية):

cd ~/bin
./docker-machine env dev | Invoke-Expression
code

يفتح VSCode للعمل مع التعليمات البرمجية على الجهاز المحلي والمرسى في الجهاز الظاهري. يسمح لك المكون الإضافي Docker for Visual Studio Code بإدارة الحاويات بشكل ملائم في جهاز افتراضي دون التسلق إلى وحدة التحكم.

الصعوبات:

في عملية إنشاء آلة عامل الميناء ، تتجمد عمليتي:

Waiting for SSH to be available...



وبعد مرور بعض الوقت انتهى بتجاوز المحاولات لتأسيس اتصال مع الجهاز الظاهري.

الأمر كله يتعلق بسياسات الشهادات. عند إنشاء جهاز ظاهري ، سترى الدليل ~ \ .docker \ machine \ machines \ dev في هذا الدليل سيكون هناك ملفات شهادات للاتصال عبر SSH: id_rsa، id_rsa.pub. قد يرفض OpenSSH استخدامها لأنها تعتقد أن لديهم مشاكل في حقوق الوصول. هنا فقط لن تخبرك ماكينة الرصيف بشيء عن هذا ، ولكنها ستعيد الاتصال ببساطة حتى تشعر بالملل.

الحل: بمجرد بدء إنشاء جهاز ظاهري جديد ، انتقل إلى دليل \ \ .docker \ machine \ machines \ dev وقم بتغيير الحقوق للملفات المحددة ، كل على حدة.

يجب أن يكون مالك الملف هو المستخدم الحالي ، ويجب حذف الوصول الكامل فقط إلى المستخدم الحالي والنظام ، وجميع المستخدمين الآخرين ، بما في ذلك مجموعة المسؤولين والمسؤولين أنفسهم.

قد تكون هناك أيضًا مشاكل في تحويل المسارات المطلقة من تنسيق Windows إلى Posix ، ومع وحدات تخزين الربط التي تحتوي على ارتباط رمزي. لكن هذه قصة أخرى.

All Articles