Docker und VMWare Workstation auf demselben Windows-Computer

Die Aufgabe war einfach: Setzen Sie Docker mit Windows auf Ihren funktionierenden Laptop, der bereits über einen Zoo verfügt. Ausgeliefert von Docker Desktop erstellte Container, alles ist in Ordnung, aber nur schnell festgestellt, dass VMWare Workstation die Ausführung virtueller Maschinen mit einem Fehler beendet hat:

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


Die Arbeit stand auf, dringend muss repariert werden




Bei Verwendung von Google wurde festgestellt, 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 zur Behebung des Problems unter Bezugnahme auf die Wissensdatenbank von Microsoft Manage Windows Defender Credential Guard . Die Lösung besteht darin, den Defender Credential Guard zu deaktivieren (Abschnitt 4 des Abschnitts zum Deaktivieren des Windows Defender Credential Guard hat mir geholfen):

mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.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 fragt Windows, ob es wirklich möglich ist, den Defender Credential Guard zu deaktivieren. Ja! Auf diese Weise kehrt VMWare Workstation zum normalen Betrieb zurück und wir befinden uns an derselben Stelle wie vor der Installation des Dockers.

Ich habe nie Lösungen gefunden, um Hyper-V und VMWare Workstation miteinander in Einklang zu bringen. Ich hoffe, sie werden in neuen Versionen Freunde finden.

Ein anderer Weg


Ich war schon lange für verschiedene Zwecke von VMWare Workstation begeistert und habe versucht, mich auf Hyper-V und VirtualBox zu beschränken, aber die Funktionalität hat meine Aufgaben nicht erfüllt, sodass ich immer noch sitze. Es stellte sich heraus, dass es eine Lösung gibt, wie VMWare, Docker und VSCode in einer Arbeitsumgebung zusammengeführt werden können.

Docker Machine - Ermöglicht es Ihnen, die Docker Engine auf einem virtuellen Host auszuführen und eine Remote- und lokale Verbindung herzustellen. Und für ihn gibt es einen Kompatibilitätstreiber mit VMWare Workstation, einen Link zu GitHub.

Ich werde die Installationsanweisungen nicht besonders nacherzählen, sondern nur eine Liste der Zutaten:

  1. Docker Toolbox ( Docker Machine enthalten)
  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 diesmal jedoch das Kontrollkästchen, um Änderungen am Betriebssystem vorzunehmen, damit VMWare Workstation nicht erneut beschädigt wird.

Ich möchte sofort darauf hinweisen, dass bei einem einfachen Benutzer alles einwandfrei funktioniert. Die Installationsprogramme fordern bei Bedarf eine Eskalation der Rechte an, aber alle Befehle in der Befehlszeile und die Skripte werden vom aktuellen Benutzer ausgeführt.

Als Ergebnis hat das Team:
$ docker-machine create --driver=vmwareworkstation dev

Aus Boot2Docker wird ein virtueller Entwickler erstellt, in dem sich ein Docker befindet.

Sie können diese virtuelle Maschine an die grafische Oberfläche der VMWare Workstation anhängen, indem Sie die entsprechende VMX-Datei öffnen. Dies ist jedoch nicht erforderlich, da VSCode jetzt von PowerShell mit einem Skript ausgeführt werden muss (aus irgendeinem Grund befanden sich Docker-Maschine und Docker-Maschine-Treiber-VMwareworkstation im Ordner bin):

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

VSCode wird geöffnet, um mit Code auf dem lokalen Computer und dem Docker in der virtuellen Maschine zu arbeiten. Mit dem Docker für Visual Studio-Code- Plugin können Sie Container in einer virtuellen Maschine bequem verwalten, ohne in die Konsole zu klettern.

Schwierigkeiten:

Beim Erstellen der Docker-Maschine friert mein Prozess ein:

Waiting for SSH to be available...



Und nach einiger Zeit endete es mit übermäßigen Versuchen, eine Verbindung mit der virtuellen Maschine herzustellen.

Es geht um die Politik der Zertifikate. Beim Erstellen einer virtuellen Maschine wird das Verzeichnis ~ \ .docker \ machine \ machine \ dev angezeigt. In diesem Verzeichnis befinden sich Zertifikatdateien für die Verbindung über SSH: id_rsa, id_rsa.pub. OpenSSH kann die Verwendung verweigern, da es glaubt, dass sie Probleme mit Zugriffsrechten haben. Nur hier sagt Ihnen die Docker-Maschine nichts darüber, sondern verbindet sich einfach wieder, bis es langweilig wird.

Lösung: Sobald die Erstellung einer neuen virtuellen Maschine beginnt, wechseln Sie in das Verzeichnis ~ \ .docker \ machine \ machine \ dev und ändern Sie die Rechte für die angegebenen Dateien nacheinander.

Der Eigentümer der Datei sollte der aktuelle Benutzer sein, vollständiger Zugriff nur auf den aktuellen Benutzer und SYSTEM. Alle anderen Benutzer, einschließlich der Gruppe der Administratoren und der Administratoren selbst, müssen gelöscht werden.

Es kann auch Probleme beim Konvertieren absoluter Pfade vom Windows-Format in Posix und beim Binden von Volumes mit symbolischer Verknüpfung geben. Aber das ist eine andere Geschichte.

All Articles