Das Problem bei mir war, dass ich den Docker-Desktop auf Windows nicht ständig laufen lassen konnte, da er WSL2 benötigt und das in der Standard Installation Probleme mit VirtualBox von Oracle bereitet. Mit ein paar einfachen Änderungen lässt sich das aber beheben. Die folgenden Schritte zeigen euch wie.
Voraussetzungen
- Windows 10 Pro - version +19042.928
- VirtualBox - version +6.1.22 (Windows version)
- WSL 2
- Vagrant +2.2.18 (Linux version)
- Vagrant plugin: virtualbox_WSL2
Meine Versionen
- Windows 10 Pro 21H2 19044.2130
- VirtualBox 6.1.38
- Vagrant 2.3.1
- Docker Desktop 4.12.0
Wenn ihr WSL2 installiert habt könnt ihr nach sehen was darauf aktuell läuft. Bei mir ein Ubuntu 20.04 und der Docker-Desktop.
PS C:\Users\pfitz> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
Jetzt müssen wir Vagrant auf der WSL2 installieren. Es muss die gleiche Version sein die auf Windows läuft.
# auf der WSL2 Kiste
# MUSS die gleiche Version wie auf dem Windows System sein
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install vagrant
Danach installieren wir das Vagrant WSL2 Plugin und setzen ein paar Umgebungsvariablen
# auf der WSL2 Kiste
vagrant plugin install virtualbox_WSL2
# Pfade setzen in der ~/.bashrc
export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"
export VAGRANT_WSL_WINDOWS_ACCESS_USER_HOME_PATH="/mnt/c/Users/[USERNAME]/"
export PATH="$PATH:/mnt/d/Programs/Virtualbox"
source ~/.bashrc
WSL2 muss noch ein wenig konfiguriert werden
# /etc/wsl.conf
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=77,fmask=11"
mountFsTab = false
Danach starten wir den Service auf Windows neu
# Windows PowerShell als Admin
Restart-Service -Name "LxssManager"
Falls ihr beim installieren des Vagrant Plugins keine Meldung von der Windows Firewall bekommt solltet ihr prüfen ob VirtualBox Headless Frontend die passenden Freigaben hat. UDP/TCP private und öffentlich muss offen sein.
Hyper-V an/ausschalten
Falls es Probleme gibt könnt ihr Hyper-V über bcedit
wieder deaktivieren. Es ist jeweils ein Neustart nötig. Mit Hyper-V off sollte alles wieder laufen wie vorher.
# Windows PowerShell als Admin
# deaktivieren
bcdedit /set hypervisorlaunchtype off
# aktivieren
bcdedit /set hypervisorlaunchtype auto
Testen
Ob Docker funktioniert könnt ihr ganz einfach mit dem hello-world Container testen.
docker run hello-world
Eine VM stagen auf der WSL2 Konsole. Sollte eine VM in eurer Windows VirtualBox erzeugen
# Windows Benutzer Verzeichniss in WSL
cd /mnt/c/Users/<my-user-name>/
# Projekt Verzeichniss anlegen
mkdir -p projects/vagrant-demo
cd projects/vagrant-demo
# Vagrantfile mit der Vagrant CLI erzeugen
vagrant init hashicorp/bionic64
ls -l Vagrantfile
# VM starten
vagrant up
# auf der VM einloggen
vagrant ssh
Quellen:
Man kann sich auch eine Dual-Boot Konfiguration machen um mit oder ohne Hyper-V zu booten. Hab ich selbst aber noch nicht getestet. https://dev.to/deadlybyte/switch-off-hyper-v-on-boot-in-windows-5gpc