Docker i VMWare Workstation a la mateixa màquina Windows

La tasca era senzilla, instal·lar Docker al meu portàtil de treball amb Windows, que ja té un zoo. Vaig instal·lar Docker Desktop, vaig crear contenidors, tot estava bé, però ràpidament vaig descobrir que VMWare Workstation va deixar de llançar màquines virtuals amb l'error:

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

L'obra s'ha aturat, cal arreglar amb urgència

Docker i VMWare Workstation a la mateixa màquina Windows

En buscar a Google, es va trobar que aquest error es produeix a causa de la incompatibilitat de VMWare Workstation i Hyper-V a la mateixa màquina. El problema és conegut i hi ha una solució oficial de VMWare com aquesta per arreglar, amb un enllaç a la base de coneixement de Microsoft Gestioneu Windows Defender Credential Guard. La solució és desactivar Defender Credential Guard (el punt 4 de la secció Desactivar Windows Defender Credential Guard em va ajudar):

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

Després de reiniciar, Windows us demanarà si voleu desactivar Defender Credential Guard. Sí! D'aquesta manera VMWare Workstation tornarà al funcionament normal i estarem al mateix lloc que abans d'instal·lar docker.

Encara no he trobat una solució per conciliar Hyper-V i VMWare Workstation, espero que es facin amics en noves versions.

D'una altra manera

He estat enganxat a VMWare Workstation durant molt de temps amb diversos propòsits, vaig intentar canviar a Hyper-V i VirtualBox, però la funcionalitat no va satisfer les meves necessitats i encara hi estic atrapat fins avui. Va resultar que hi ha una solució sobre com combinar VMWare, Docker i VSCode en un entorn de treball.

Màquina Docker — us permet executar Docker Engine en un host virtual i connectar-hi tant de manera remota com local. I hi ha un controlador de compatibilitat amb VMWare Workstation per a això, enllaç a github

No explicaré especialment les instruccions d'instal·lació, només la llista d'ingredients:

  1. Caixa d'eines Docker (Màquina Docker inclòs)
  2. Controlador de Docker Machine VMware Workstation
  3. escriptori docker

Sí, Docker Desktop, malauradament, també serà necessari. Si l'heu enderrocat, torneu a instal·lar-lo, però aquesta vegada elimineu la casella de selecció per fer canvis al sistema operatiu per no trencar VMWare Workstation de nou.

M'agradaria assenyalar de seguida que tot funciona bé des d'un usuari senzill, els programes d'instal·lació demanaran una escalada de drets quan ho necessitin, però totes les ordres de la línia d'ordres i els scripts s'executen des de l'usuari actual.

Com a resultat, l'ordre:

$ docker-machine create --driver=vmwareworkstation dev

es crearà una màquina virtual de desenvolupament des de Boot2Docker, dins de la qual s'instal·larà Docker.

Aquesta màquina virtual es pot connectar a la interfície gràfica de VMWare Workstation obrint el fitxer vmx corresponent. Però això no és necessari, perquè PowerShell haurà de llançar VSCode com a script (per algun motiu, docker-machine i docker-machine-driver-vmwareworkstation van acabar a la carpeta bin):

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

VSCode s'obrirà per treballar amb el codi a la màquina local i Docker a la màquina virtual. Connectar Docker per a Visual Studio Code permet gestionar còmodament contenidors en una màquina virtual sense entrar a la consola.

Dificultats:

Durant la creació de docker-machine, el meu procés es va congelar:

Waiting for SSH to be available...

Docker i VMWare Workstation a la mateixa màquina Windows

I al cap d'un temps va acabar amb més intents d'establir una connexió amb la màquina virtual.

Tot es refereix a la política de certificats. Quan creeu una màquina virtual, tindreu un directori ~.dockermachinemachinesdev En aquest directori hi haurà fitxers de certificat per connectar-vos mitjançant SSH: id_rsa, id_rsa.pub. OpenSSH pot negar-se a utilitzar-los perquè creu que tenen problemes de permisos. Només docker-machine no us dirà res sobre això, simplement es tornarà a connectar fins que s'avorreixi.

solució: Tan aviat com comenci la creació d'una màquina virtual nova, aneu al directori ~.dockermachinemachinesdev i canvieu els drets dels fitxers especificats, un a un.

El propietari del fitxer ha de ser l'usuari actual, només l'usuari actual i el SISTEMA tenen accés complet, tots els altres usuaris, inclòs el grup d'administradors i els mateixos administradors, s'han de suprimir.

També pot haver-hi problemes amb la conversió de camins absoluts del format de Windows a Posix i amb volums d'enllaç que contenen un enllaç simbòlic. Però això és una altra història.

Font: www.habr.com

Afegeix comentari