Docker und VMWare Workstation auf demselben Windows-Computer

Die Aufgabe war einfach: Installieren Sie Docker auf meinem funktionierenden Windows-Laptop, der bereits über einen Zoo verfügt. Ich habe Docker Desktop installiert und Container erstellt, alles ist in Ordnung, aber ich habe schnell festgestellt, dass VMWare Workstation die Ausführung virtueller Maschinen mit einem Fehler gestoppt hat:

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

Die Arbeiten wurden eingestellt, eine Reparatur ist dringend erforderlich

Docker und VMWare Workstation auf demselben Windows-Computer

Durch Googeln wurde herausgefunden, dass dieser Fehler aufgrund der Inkompatibilität von VMWare Workstation und Hyper-V auf demselben Computer auftritt. Das Problem ist bekannt und es gibt eine offizielle VMWare-Lösung wie diese flicken, mit einem Link zur Microsoft Knowledge Base Verwalten Sie Windows Defender Credential Guard. Die Lösung besteht darin, Defender Credential Guard zu deaktivieren (Punkt 4 im Abschnitt „Windows Defender Credential Guard deaktivieren“ hat mir geholfen):

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

Nach dem Neustart werden Sie von Windows gefragt, ob Sie Defender Credential Guard wirklich deaktivieren möchten. Ja! Auf diese Weise kehrt VMWare Workstation zum Normalbetrieb zurück und wir befinden uns an der gleichen Stelle wie vor der Installation von Docker.

Ich habe keine Lösung gefunden, wie man Hyper-V und VMWare Workstation in Einklang bringt. Ich hoffe, dass sie in neuen Versionen Freunde werden.

Ein anderer Weg

Ich war schon lange süchtig nach VMWare Workstation für verschiedene Zwecke, ich habe versucht, auf Hyper-V und VirtualBox auszusteigen, aber die Funktionalität hat meine Aufgaben nicht befriedigt, und so bleibe ich bis heute dabei. Es stellte sich heraus, dass es eine Lösung gibt, wie man VMWare, Docker und VSCode in einer Arbeitsumgebung miteinander verbinden kann.

Docker-Maschine - ermöglicht Ihnen, Docker Engine auf einem virtuellen Host auszuführen und sich sowohl remote als auch lokal mit diesem zu verbinden. Und es gibt einen VMWare Workstation-Kompatibilitätstreiber dafür, Link zu github

Ich werde nicht besonders die Installationsanleitung nacherzählen, sondern nur die Zutatenliste:

  1. Docker-Toolbox (Docker-Maschine im Komplekt)
  2. Docker Machine VMware Workstation-Treiber
  3. Docker-Desktop

Ja, Docker Desktop wird leider auch benötigt. Wenn Sie es abgerissen haben, installieren Sie es erneut, entfernen Sie dieses Mal jedoch das Kontrollkästchen zum Vornehmen von Änderungen am Betriebssystem, um VMWare Workstation nicht erneut zu beschädigen.

Ich möchte sofort darauf hinweisen, dass bei einem einfachen Benutzer alles einwandfrei funktioniert. Die Installationsprogramme werden bei Bedarf nach einer Rechteausweitung fragen, aber alle Befehle in der Befehlszeile und Skripte werden vom aktuellen Benutzer ausgeführt.

Als Ergebnis hat das Team:

$ docker-machine create --driver=vmwareworkstation dev

Von Boot2Docker aus wird eine Dev-Virtualka erstellt, in der sich Docker befindet.

Diese virtuelle Maschine kann an die VMWare Workstation-GUI angehängt werden, indem die entsprechende VMX-Datei geöffnet wird. Dies ist jedoch nicht erforderlich, da VSCode nun ein PowerShell-Skript ausführen muss (aus irgendeinem Grund landeten meine Docker-Maschine und meine Docker-Maschine-Treiber-VMwareworkstation im Ordner „bin“):

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

VSCode wird geöffnet, um mit Code auf der lokalen Maschine und Docker in der virtuellen Maschine zu arbeiten. Plugin Docker für Visual Studio Code ermöglicht Ihnen die bequeme Verwaltung von Containern in einer virtuellen Maschine, ohne die Konsole aufrufen zu müssen.

Schwierigkeiten:

Beim Erstellen der Docker-Maschine blieb bei mir der Prozess hängen:

Waiting for SSH to be available...

Docker und VMWare Workstation auf demselben Windows-Computer

Und nach einer Weile endete es mit einem Übermaß an Versuchen, eine Verbindung mit der virtuellen Maschine herzustellen.

Es geht um die Zertifikatspolitik. Wenn Sie eine virtuelle Maschine erstellen, verfügen Sie über ein Verzeichnis ~.dockermachinemachinesdev. In diesem Verzeichnis befinden sich Zertifikatsdateien für die Verbindung über SSH: id_rsa, id_rsa.pub. OpenSSH verweigert möglicherweise deren Verwendung, weil es der Meinung ist, dass es sich um Berechtigungsprobleme handelt. Nur Docker-Machine wird Ihnen nichts darüber sagen, sondern einfach die Verbindung wiederherstellen, bis es langweilig wird.

Lösung: Sobald die Erstellung einer neuen virtuellen Maschine beginnt, gehen wir in das Verzeichnis ~.dockermachinemachinesdev und ändern nacheinander die Rechte an den angegebenen Dateien.

Die Datei muss dem aktuellen Benutzer gehören, nur der aktuelle Benutzer und SYSTEM haben vollen Zugriff, alle anderen Benutzer, einschließlich der Administratorengruppe und der Administratoren selbst, müssen gelöscht werden.

Es können auch Probleme beim Konvertieren absoluter Pfade vom Windows- in das Posix-Format und beim Binden von Volumes mit symbolischen Links auftreten. Aber das ist eine andere Geschichte.

Source: habr.com

Kommentar hinzufügen