Docker un VMWare Workstation uz viena Windows datora

Uzdevums bija vienkāršs, uzstādīt Docker savā darba klēpjdatorā ar Windows, kurā jau tāpat bija zoodārzs. Uzstādīju Docker Desktop, izveidoju konteinerus, viss kārtībā, bet ātri pamanīju, ka VMWare Workstation vairs nespēj palaist virtuālās mašīnas ar kļūdu:

VMware Workstation un Device/Credential Guard nav savietojami. VMware Workstation var palaist, pēc Device/Credential Guard atslēgšanas.

Darbs apstājās, nepieciešams steidzami labot

Docker un VMWare Workstation uz viena Windows datora

Meklējot ar Google, noskaidroju, ka šī kļūda rodas nesavietojamības dēļ starp VMWare Workstation un Hyper-V vienā datorā. Problema ir zināma un ir oficiāls VMware risinājums, kā to salabot, ar atsauci uz Microsoft zināšanu bāzi Pārvaldīt Windows Defender Credential Guard. Risinājums ir atslēgt Defender Credential Guard (man palīdzēja 4. punkts sadaļā 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

Pēc Windows restartēšanas, tā jautās, vai tiešām vēlaties atslēgt Defender Credential Guard. Jā! Tādējādi VMWare Workstation atgriezīsies normālā darbībā, un mēs nonāksim tajā pašā vietā, kur bijām pirms Docker uzstādīšanas.

Risinājumu, kā samierināt Hyper-V un VMWare Workstation, es tā arī neatradu, ceru, ka jaunajās versijās tās sadraudzēsies.

Cits ceļš

Es jau sen lietoju VMWare Workstation dažādiem mērķiem, mēģināju pāriet uz Hyper-V un VirtualBox, bet funkcionalitāte neapmierināja manas vajadzības, tāpēc joprojām turpinu to lietot. Izrādījās, ka ir risinājums, kā savienot VMWare, Docker un VSCode vienā darba vidē.

Docker Machine — ļauj palaist Docker Engine uz virtuālā hosta un piekļūt tam gan attālināti, gan lokāli. Un tam ir saderības draiveris ar VMWare Workstation, saite uz GitHub

Uzstādīšanas instrukciju īpaši neizstāstīšu, tikai sastāvdaļu saraksts:

  1. Docker Toolbox (Docker Machine iekļauts komplektā)
  2. Docker Machine VMware Workstation Driver
  3. Docker Desktop

Jā, Docker Desktop, diemžēl, arī būs nepieciešams. Ja to esat izdzēsuši, uzstādām no jauna, bet šoreiz noņemot atzīmi par izmaiņu veikšanu operētājsistēmā, lai atkārtoti nesabojātu VMWare Workstation.

Vispirms vēlos norādīt, ka viss lieliski darbojas no parastā lietotāja puses, instalācijas programmas lūgs tiesību paaugstināšanu, kad tas būs nepieciešams, bet visas komandas komandu rindā un skripti tiek izpildīti no pašreizējā lietotāja.

Rezultātā ar komandu:

$ docker-machine create --driver=vmwareworkstation dev

tiks izveidota virtuālā mašīna dev Boot2Docker iekšienē, kurā būs Docker.

Šo virtuālo mašīnu var pievienot grafiskajā interfeisā VMWare Workstation, atverot attiecīgo vmx failu. Tomēr tas nav obligāti, jo tagad VSCode būs jāsāk ar PowerShell skriptu (man kaut kā docker-machine un docker-machine-driver-vmwareworkstation izrādījās tieši bin mapē):

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

Atvērsies VSCode, lai strādātu ar kodu uz lokālās mašīnas un Docker virtuālajā mašīnā. Piesaistītais Docker for Visual Studio Code piedāvā ērti pārvaldīt konteinerus virtuālajā mašīnā, neiespiežoties konsolē.

Grūtības:

Izveidojot docker-machine, man process iestrēga:

Waiting for SSH to be available...

Docker un VMWare Workstation uz viena Windows datora

Un pēc kāda laika tas pabeidzās ar pārsniegtām savienojuma izveidošanas mēģinājumu reizēm ar virtuālo mašīnu.

Visa lieta ir sertifikātu politikā. Izveidojot virtuālo mašīnu, jums parādīsies katalogs ~/.dockermachinemachinesdev, kurā būs sertifikātu faili SSH piekļuvei: id_rsa, id_rsa.pub. OpenSSH var atteikties tos izmantot, jo uzskata, ka tiem ir piekļuves tiesību problēmas. Tikai docker-machine jums par to neko neteiks, bet vienkārši turpinās pārbaudīt savienojumu, līdz tas apnīk.

Risinājums: Kad sāksies jaunas virtuālās mašīnas izveide, ieejiet katalogā ~/.dockermachinemachinesdev un mainiet tiesības uz minētajiem failiem, pa vienam.

Faila īpašniekam jābūt pašreizējam lietotājam, pilnīgām tiesībām tikai pašreizējam lietotājam un SYSTEM, visiem pārējiem lietotājiem, ieskaitot administratoru grupu un pašiem administratoriem, jāiznīcina.

Tāpat var rasties problēmas ar absolūto ceļu konvertēšanu no Windows formāta uz Posix, un ar saišu apjomu piesaistīšanu, kas satur simboliskās saites. Bet tas jau ir cits stāsts.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster