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

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

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

توقف العمل ، وأصبح الإصلاح عاجلاً

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

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

mountvol X: /s
copy %WINDIR%System32SecConfig.efi X:EFIMicrosoftBootSecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "EFIMicrosoftBootSecConfig.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 Workstation إلى التشغيل الطبيعي ، وسنجد أنفسنا في نفس المكان كما كان الحال قبل تثبيت docker.

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

طريق اخر

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

آلة عامل الميناء - يسمح لك بتشغيل Docker Engine على مضيف افتراضي والاتصال به عن بُعد ومحليًا. وهناك برنامج تشغيل متوافق مع VMWare Workstation لذلك ، ارتباط إلى جيثب

لن أعيد طرح تعليمات التثبيت على وجه الخصوص ، فقط قائمة المكونات:

  1. صندوق أدوات عامل الميناء (آلة عامل الميناء متضمن)
  2. عامل ميناء آلة VMware برنامج تشغيل محطة العمل
  3. سطح المكتب Docker

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

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

ونتيجة لذلك فإن الفريق:

$ docker-machine create --driver=vmwareworkstation dev

من Boot2Docker ، سيتم إنشاء جهاز dev virtualka بداخله سيكون Docker.

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

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

سيفتح VSCode للعمل مع الكود على الجهاز المحلي و docker في الجهاز الظاهري. توصيل في عامل ميناء لبرنامج Visual Studio Code يسمح لك بإدارة الحاويات بسهولة في جهاز افتراضي دون الدخول إلى وحدة التحكم.

الصعوبات:

في عملية إنشاء آلة الإرساء ، علقت العملية بالنسبة لي:

Waiting for SSH to be available...

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

وبعد فترة ، انتهى الأمر بعدد كبير من المحاولات لإنشاء اتصال بالجهاز الظاهري.

الأمر كله يتعلق بسياسة الشهادة. عند إنشاء آلة افتراضية ، سيكون لديك دليل ~ .dockermachinemachinesdev في هذا الدليل ، وستكون هناك ملفات شهادات للاتصال عبر SSH: id_rsa ، id_rsa.pub. قد ترفض OpenSSH استخدامها لأنها تعتقد أن لديهم مشكلات تتعلق بالإذن. فقط آلة الرصيف لن تخبرك بأي شيء عن هذا ، لكنها ستعيد الاتصال ببساطة حتى تشعر بالملل.

الحل: بمجرد بدء إنشاء آلة افتراضية جديدة ، نذهب إلى الدليل ~ .dockermachinemachinesdev ونغير الحقوق إلى الملفات المحددة ، واحدًا تلو الآخر.

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

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

المصدر: www.habr.com

إضافة تعليق