ProHoster > Blog > İdarə > Docker və VMWare Workstation eyni Windows maşınında
Docker və VMWare Workstation eyni Windows maşınında
Tapşırıq sadə idi, artıq zooparkı olan Windows ilə iş laptopuma Docker-i quraşdırın. Docker Desktop quraşdırdım, konteynerlər yaratdım, hər şey qaydasında idi, lakin tez bir zamanda aşkar etdim ki, VMWare Workstation xəta ilə virtual maşınları işə salmağı dayandırıb:
VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.
İş dayanıb, təcili düzəldilməlidir
Google axtarışı zamanı məlum olub ki, bu xəta eyni maşında VMWare Workstation və Hyper-V-nin uyğunsuzluğu səbəbindən baş verir. Problem məlumdur və bunun kimi rəsmi VMWare həlli var düzeltmek, Microsoft bilik bazasına keçid ilə Windows Defender Credential Guard-ı idarə edin. Həll yolu Defender Credential Guard-ı söndürməkdir (Windows Defender Credential Guard-ı Disable bölməsinin 4-cü bəndi mənə kömək etdi):
Yenidən başladıqdan sonra Windows sizdən Defender Credential Guard-ı deaktiv edib-etməməyinizi soruşacaq. Bəli! Bu yolla VMWare Workstation normal işləməyə qayıdacaq və biz docker quraşdırmadan əvvəlki yerdə olacağıq.
Mən hələ də Hyper-V və VMWare Workstation-nı barışdırmaq üçün bir həll tapmamışam, ümid edirəm ki, onlar yeni versiyalarda dost olacaqlar.
Başqa bir yol
Mən uzun müddət müxtəlif məqsədlər üçün VMWare Workstation-a bağlı olmuşam, Hyper-V və VirtualBox-a keçməyə çalışmışam, lakin funksionallıq ehtiyaclarımı qane etmirdi və mən hələ də bu günə qədər orada qalmışam. Məlum oldu ki, VMWare, Docker və VSCode-u bir iş mühitində necə birləşdirməyə dair bir həll var.
Docker Maşın — Docker Engine-i virtual hostda işə salmağa və ona həm uzaqdan, həm də yerli olaraq qoşulmağa imkan verir. Və bunun üçün bir VMWare Workstation uyğunluğu sürücüsü var, github-a keçid
Quraşdırma təlimatlarını xüsusilə təkrarlamayacağam, sadəcə inqrediyentlərin siyahısı:
Bəli, təəssüf ki, Docker Desktop da lazım olacaq. Əgər onu sökmüsünüzsə, onu yenidən quraşdırın, lakin bu dəfə VMWare Workstation-nı yenidən pozmamaq üçün ƏS-də dəyişiklik etmək haqqında qeyd qutusunu çıxarın.
Dərhal qeyd etmək istərdim ki, sadə bir istifadəçidən hər şey yaxşı işləyir, quraşdırma proqramları lazım olduqda hüquqların artırılmasını xahiş edəcək, lakin komanda xəttindəki bütün əmrlər və skriptlər cari istifadəçidən icra olunur.
Nəticədə, əmr:
$ docker-machine create --driver=vmwareworkstation dev
Boot2Docker-dən dev virtual maşın yaradılacaq, onun daxilində Docker quraşdırılacaq.
Bu virtual maşın müvafiq vmx faylını açmaqla VMWare Workstation qrafik interfeysinə qoşula bilər. Lakin bu lazım deyil, çünki VSCode indi PowerShell tərəfindən skript kimi işə salınmalı olacaq (nədənsə docker-machine və docker-machine-driver-vmwareworkstation bin qovluğunda sona çatdı):
cd ~/bin
./docker-machine env dev | Invoke-Expression
code
VSCode yerli maşındakı kodla və virtual maşında Docker ilə işləmək üçün açılacaq. Plugin Visual Studio Kodu üçün Docker konsola girmədən virtual maşında konteynerləri rahat idarə etməyə imkan verir.
Çətinliklər:
Docker-machin yaradılması zamanı prosesim dondu:
Waiting for SSH to be available...
Və bir müddət sonra virtual maşınla əlaqə yaratmaq üçün daha çox cəhdlə başa çatdı.
Bütün bunlar sertifikat siyasətinə aiddir. Virtual maşın yaratarkən ~.dockermachinemachinesdev kataloqunuz olacaq.Bu kataloqda SSH vasitəsilə qoşulmaq üçün sertifikat faylları olacaq: id_rsa, id_rsa.pub. OpenSSH, icazələrlə bağlı problemləri olduğunu düşündüyü üçün onlardan istifadə etməkdən imtina edə bilər. Yalnız docker-machine sizə bu barədə heç nə deməyəcək, sadəcə cansıxıcı olana qədər yenidən qoşulacaq.
həll: Yeni virtual maşının yaradılması başlayan kimi ~.dockermachinemachinesdev qovluğuna keçin və göstərilən faylların hüquqlarını bir-bir dəyişdirin.
Faylın sahibi cari istifadəçi olmalıdır, yalnız cari istifadəçi və SİSTEM tam girişə malikdir, bütün digər istifadəçilər, o cümlədən idarəçilər qrupu və idarəçilərin özləri silinməlidir.
Mütləq yolların Windows formatından Posix-ə çevrilməsi və simvolik keçidi ehtiva edən həcmlərin bağlanması ilə bağlı problemlər də ola bilər. Amma bu başqa hekayədir.