Docker و VMWare Workstation روی یک دستگاه ویندوز

کار ساده بود، Docker را روی لپ تاپ کاری من با ویندوز نصب کنید، که قبلاً یک باغ وحش دارد. من 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 روی یک دستگاه ویندوز

با جستجوی گوگل مشخص شد که این خطا به دلیل ناسازگاری VMWare Workstation و Hyper-V روی یک دستگاه است. مشکل مشخص است و راه حل رسمی VMWare مانند این وجود دارد برای رفع، با پیوند به پایگاه دانش مایکروسافت Windows Defender Credential Guard را مدیریت کنید. راه حل این است که 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

پس از راه اندازی مجدد، ویندوز از شما می پرسد که آیا Defender Credential Guard را غیرفعال کنید یا خیر. آره! به این ترتیب VMWare Workstation به حالت عادی باز می گردد و ما در همان مکان قبل از نصب docker خواهیم بود.

من هنوز راه حلی برای تطبیق Hyper-V و VMWare Workstation پیدا نکرده ام، امیدوارم در نسخه های جدید با هم دوست شوند.

یک راه دیگر

من مدت زیادی است که برای اهداف مختلف در VMWare Workstation گیر افتاده‌ام، سعی کردم به Hyper-V و VirtualBox سوئیچ کنم، اما عملکرد نیازهای من را برآورده نکرد و هنوز هم تا به امروز در آنجا مانده‌ام. معلوم شد راه حلی برای ترکیب VMWare، Docker و VSCode در یک محیط کاری وجود دارد.

ماشین داکر - به شما امکان می دهد Docker Engine را بر روی یک هاست مجازی اجرا کنید و به صورت از راه دور و محلی به آن متصل شوید. و یک درایور سازگاری VMWare Workstation برای آن وجود دارد، لینک به github

من به ویژه دستورالعمل های نصب را بازگو نمی کنم، فقط لیستی از مواد تشکیل دهنده:

  1. جعبه ابزار Docker (ماشین داکر مشمول)
  2. درایور ایستگاه کاری Docker Machine VMware
  3. رومیزی داکر

بله، متأسفانه Docker Desktop نیز مورد نیاز خواهد بود. اگر آن را خراب کردید، دوباره آن را نصب کنید، اما این بار چک باکس مربوط به ایجاد تغییرات در سیستم عامل را حذف کنید تا دوباره VMWare Workstation را خراب نکنید.

من می خواهم فوراً توجه داشته باشم که همه چیز از یک کاربر ساده خوب کار می کند ، برنامه های نصب در صورت نیاز درخواست افزایش حقوق می کنند ، اما همه دستورات در خط فرمان و اسکریپت ها از کاربر فعلی اجرا می شوند.

در نتیجه دستور:

$ docker-machine create --driver=vmwareworkstation dev

یک ماشین مجازی dev از Boot2Docker ایجاد خواهد شد که Docker در داخل آن نصب خواهد شد.

این ماشین مجازی را می توان با باز کردن فایل vmx مربوطه به رابط گرافیکی VMWare Workstation متصل کرد. اما این ضروری نیست، زیرا VSCode اکنون باید توسط PowerShell به عنوان یک اسکریپت راه‌اندازی شود (به دلایلی، docker-machine و docker-machine-driver-vmwareworkstation در پوشه bin قرار گرفتند):

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

VSCode برای کار با کد در ماشین محلی و Docker در ماشین مجازی باز می شود. پلاگین داکر برای کد ویژوال استودیو به شما این امکان را می دهد تا به راحتی کانتینرها را در یک ماشین مجازی بدون رفتن به کنسول مدیریت کنید.

مشکلات:

در طول ایجاد docker-machine، فرآیند من متوقف شد:

Waiting for SSH to be available...

Docker و VMWare Workstation روی یک دستگاه ویندوز

و پس از مدتی با تلاش های بیشتر برای برقراری ارتباط با ماشین مجازی به پایان رسید.

همه چیز در مورد سیاست گواهی است. هنگام ایجاد یک ماشین مجازی، یک دایرکتوری ~.dockermachinemachinesdev خواهید داشت.در این دایرکتوری فایل های گواهی برای اتصال از طریق SSH وجود دارد: id_rsa، id_rsa.pub. OpenSSH ممکن است از استفاده از آنها امتناع کند زیرا فکر می کند که آنها مشکلات مجوز دارند. فقط Docker-machine چیزی در این مورد به شما نمی گوید، به سادگی دوباره وصل می شود تا زمانی که خسته کننده شود.

راه حل: به محض شروع ایجاد یک ماشین مجازی جدید، به دایرکتوری ~.dockermachinemachinesdev بروید و حقوق فایل های مشخص شده را یکی یکی تغییر دهید.

مالک فایل باید کاربر فعلی باشد، فقط کاربر فعلی و SYSTEM دسترسی کامل دارند، همه کاربران دیگر از جمله گروه مدیران و خود مدیران باید حذف شوند.

همچنین ممکن است در تبدیل مسیرهای مطلق از فرمت ویندوز به پوزیکس و جلدهای صحافی حاوی پیوند نمادین مشکلاتی وجود داشته باشد. ولی اون یک ماجرای دیگه است.

منبع: www.habr.com

اضافه کردن نظر