Die Aufgabe war einfach, Docker auf meinem Arbeitslaptop mit Windows, auf dem bereits ein Zoo von anderen Anwendungen lief, zu installieren. Ich habe Docker Desktop installiert und Container erstellt, alles in Ordnung, aber ich stellte schnell fest, dass VMware Workstation die virtuellen Maschinen mit der Fehlermeldung nicht mehr starten konnte:
VMware Workstation und Device/Credential Guard sind nicht kompatibel. VMware Workstation kann nach Deaktivierung von Device/Credential Guard ausgeführt werden.
Die Arbeit stand still, ich musste es dringend reparieren.

Durch Googeln stellte ich fest, dass dieser Fehler durch die Inkompatibilität von VMware Workstation und Hyper-V auf demselben Rechner verursacht wird. Das Problem ist bekannt und es gibt eine offizielle Lösung von VMware, wie man das , mit einem Link zur Microsoft-Wissensdatenbank . Die Lösung besteht darin, den Defender Credential Guard zu deaktivieren (mir half Punkt 4 im Abschnitt Deaktivierung von Windows Defender Credential Guard):
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: /dNach dem Neustart wird Windows fragen, ob der Defender Credential Guard wirklich deaktiviert werden soll. Ja! Damit wird VMware Workstation wieder normal funktionieren, und wir befinden uns an derselben Stelle wie vor der Installation von Docker.
Eine Lösung, wie man Hyper-V und VMware Workstation zusammenbringen kann, habe ich nicht gefunden. Ich hoffe, in neuen Versionen werden sie sich besser verstehen.
Ein anderer Weg
Ich bin schon lange auf VMware Workstation für verschiedene Zwecke angewiesen gewesen, habe versucht, zu Hyper-V und VirtualBox zu wechseln, aber die Funktionalität hat meinen Anforderungen nicht entsprochen, also sitze ich bis heute daran fest. Es stellte sich heraus, dass es eine Lösung gibt, um VMware, Docker und VSCode in einer Arbeitsumgebung zu vereinen.
— ermöglicht es, Docker Engine auf einem virtuellen Host zu starten und sowohl remote als auch lokal darauf zuzugreifen. Dafür gibt es einen Kompatibilitäts-Treiber für VMware Workstation,
Ich werde die Installationsanleitung nicht viel wiederholen, nur die Zutatenliste:
- ( im Lieferumfang enthalten)
- Docker Desktop
Ja, Docker Desktop wird leider auch benötigt. Wenn Sie es deinstalliert haben, installieren Sie es erneut, aber diesmal das Kästchen für Änderungen am Betriebssystem abwählen, um VMware Workstation nicht erneut zu beschädigen.
Ich möchte gleich darauf hinweisen, dass alles wunderbar als normaler Benutzer funktioniert, die Installationsprogramme werden um Eskalation der Berechtigungen bitten, wenn es nötig ist, aber alle Befehle in der Eingabeaufforderung und Skripte werden vom aktuellen Benutzer ausgeführt.
Am Ende mit dem Befehl:
$ docker-machine create --driver=vmwareworkstation devEine virtuelle Maschine dev wird aus Boot2Docker erstellt, in der Docker ausgeführt wird.
Diese virtuelle Maschine kann im grafischen Interface von VMWare Workstation angehängt werden, indem die entsprechende vmx-Datei geöffnet wird. Aber das ist nicht notwendig, denn VSCode muss jetzt mit einem PowerShell-Skript gestartet werden (bei mir sind docker-machine und docker-machine-driver-vmwareworkstation irgendwie im bin-Verzeichnis gelandet):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeVSCode öffnet sich zur Mitarbeit am Code auf der lokalen Maschine und Docker in der virtuellen Maschine. Das Plugin ermöglicht eine bequeme Verwaltung von Containern in der virtuellen Maschine, ohne die Konsole betreten zu müssen.
Herausforderungen:
Während des Erstellungsprozesses von docker-machine hing der Prozess:
Warten auf SSH-Verfügbarkeit... 
Und nach einiger Zeit wurde der Versuch, eine Verbindung zur virtuellen Maschine herzustellen, mit einer Überschreitung der Versuche beendet.
Das Problem liegt an der Richtlinie zu den Zertifikaten. Beim Erstellen einer virtuellen Maschine entsteht das Verzeichnis ~/.dockermachinemachinesdev, in dem die Zertifikatsdateien für die SSH-Verbindung liegen: id_rsa, id_rsa.pub. OpenSSH könnte sich weigern, diese zu verwenden, da es glaubt, dass sie Probleme mit den Zugriffsrechten haben. Aber docker-machine sagt dir darüber nichts und wird einfach weiter versuchen, sich zu verbinden, bis es frustriert aufgegeben wird.
Lösung: Sobald die Erstellung einer neuen virtuellen Maschine beginnt, gehen wir in das Verzeichnis ~/.dockermachinemachinesdev und ändern die Berechtigungen für die angegebenen Dateien, eine nach der anderen.
Der Besitzer der Datei sollte der aktuelle Benutzer sein, vollständiger Zugriff nur für den aktuellen Benutzer und SYSTEM, während alle anderen Benutzer, einschließlich der Administratorgruppe und die Administratoren selbst, entfernt werden sollten.
Es können auch Probleme mit der Umwandlung absoluter Pfade vom Windows-Format in Posix auftreten sowie mit dem Binden von Volumes, die symbolische Links enthalten. Aber das ist eine andere Geschichte.
Quelle: habr.com
