Docker et VMWare Workstation sur la même machine Windows

La tâche était simple, mettez Docker sur votre ordinateur portable de travail avec Windows, qui a déjà un zoo. Livré Docker Desktop a créé des conteneurs, tout va bien, mais vient de découvrir rapidement que VMWare Workstation a cessé d'exécuter des machines virtuelles avec une erreur:

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


Le travail s'est levé, un besoin urgent d'être réparé




En utilisant Google, il a été constaté que cette erreur se produit en raison de l'incompatibilité de VMWare Workstation et Hyper-V sur la même machine. Le problème est connu et il existe une solution officielle VMWare sur la façon de le résoudre , en référence à la base de connaissances Microsoft Manage Windows Defender Credential Guard . La solution consiste à désactiver Defender Credential Guard (le paragraphe 4 de la section Désactiver Windows Defender Credential Guard m'a aidé):

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

Après le redémarrage, Windows vous demandera s'il est vraiment possible de désactiver Defender Credential Guard. Oui! Ainsi, VMWare Workstation reviendra à son fonctionnement normal, et nous serons au même endroit qu'avant l'installation du docker.

Je n'ai jamais trouvé de solutions pour réconcilier Hyper-V et VMWare Workstation, j'espère qu'ils se feront des amis dans les nouvelles versions.

Autrement


J'ai longtemps été accroché à VMWare Workstation à diverses fins, j'ai essayé de descendre sur Hyper-V et VirtualBox, mais la fonctionnalité ne satisfaisait pas mes tâches, alors je reste assis. Il s'est avéré qu'il existe une solution pour réunir VMWare, Docker et VSCode dans un environnement de travail.

Docker Machine - vous permet d'exécuter le Docker Engine sur un hôte virtuel et de vous y connecter à distance et localement. Et pour lui il y a un pilote de compatibilité avec VMWare Workstation, un lien vers GitHub

je ne reviendrai pas particulièrement sur les instructions d'installation, seulement une liste d'ingrédients:

  1. Docker Toolbox ( Docker Machine inclus)
  2. Pilote Docker Machine VMware Workstation
  3. Bureau Docker

Oui, Docker Desktop, malheureusement, est également nécessaire. Si vous l'avez démoli, réinstallez-le, mais en supprimant cette fois la case à cocher pour apporter des modifications au système d'exploitation afin de ne plus casser VMWare Workstation.

Je veux noter tout de suite que tout fonctionne bien pour un simple utilisateur, les programmes d'installation demanderont une escalade des droits quand ils en auront besoin, mais toutes les commandes de la ligne de commande et les scripts sont exécutés par l'utilisateur actuel.

En conséquence, l'équipe:
$ docker-machine create --driver=vmwareworkstation dev

à partir de Boot2Docker, un développeur virtuel sera créé à l'intérieur duquel il y aura un Docker.

Vous pouvez attacher cette machine virtuelle à l'interface graphique de VMWare Workstation en ouvrant le fichier vmx correspondant. Mais ce n'est pas nécessaire, car VSCode devra maintenant être exécuté par PowerShell avec un script (pour une raison quelconque, docker-machine et docker-machine-driver-vmwareworkstation s'est avéré être dans le dossier bin):

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

VSCode s'ouvre pour fonctionner avec le code sur la machine locale et le docker dans la machine virtuelle. Le plug-in Docker pour Visual Studio Code vous permet de gérer facilement les conteneurs dans une machine virtuelle sans grimper dans la console.

Difficultés:

Dans le processus de création de docker-machine, mon processus se bloque:

Waiting for SSH to be available...



Et après un certain temps, cela s'est terminé par des tentatives excessives d'établir une connexion avec la machine virtuelle.

Tout tourne autour de la politique des certificats. Lors de la création d'une machine virtuelle, vous verrez le répertoire ~ \ .docker \ machine \ machines \ dev dans ce répertoire, il y aura des fichiers de certificats pour la connexion via SSH: id_rsa, id_rsa.pub. OpenSSH peut refuser de les utiliser car il pense qu'ils ont des problèmes de droits d'accès. Seulement ici, docker-machine ne vous dira rien à ce sujet, mais se reconnectera simplement jusqu'à ce qu'il s'ennuie.

Solution: dès que la création d'une nouvelle machine virtuelle démarre, accédez au répertoire ~ \ .docker \ machine \ machines \ dev et modifiez les droits sur les fichiers spécifiés, un par un.

Le propriétaire du fichier doit être l'utilisateur actuel, un accès complet uniquement à l'utilisateur actuel et au SYSTÈME, tous les autres utilisateurs, y compris le groupe d'administrateurs et les administrateurs eux-mêmes, doivent être supprimés.

Il peut également y avoir des problèmes avec la conversion de chemins absolus du format Windows vers Posix et avec les volumes de liaison contenant un lien symbolique. Mais c'est une autre histoire.

All Articles