Wer einen Ubuntu Server mit Docker auf einem Hyper-V Server betreiben möchte, muss einige Dinge beachten da es ansonsten zu Problemen kommt.
Als erstes muss vor der Installation von Docker in der Ubuntu VM die nested Virtualisierung aktiviert werden. Das bedeutet, der Hyper-V erlaubt eine weiter Virtualisierung in einer virtuellen VM.
Der Befehl dazu ist als Administrator in der PowerShell auszuführen.
Nehmen wir an, der virtuelle Ubuntu Server wurde mit dem Namen „Ubuntu“ angelegt. Dann lautet der Befehl:
Set-VMProcessor -VMName Ubuntu -ExposeVirtualizationExtensions $true
Docker Container MACVLAN
Im Normalfall werden die Docker Container in einem eignen Docker LAN betrieben und die einzelnen Docker Container werden per NAT auf den Docker Host Server weitergeleitet.
Es gibt jedoch auch mache Anwendungen, die eine IP aus dem LAN benötigen, damit diese in beide Richtungen kommunizieren kann (z.B. bei ioBroker der Homematic hm-rpc.0 Adapter) und mit einer eigenen IP erreichbar sind.
Docker Container am Hyper-V Server in einer nested VM
Damit man einen Docker Container mit einer eignen erreichbaren IP betreiben kann, muss man ein Macvlan Netz am Docker Host anlegen. Dazu findet man viele Anleitungen. Am einfachsten geht es über Portainer.
Beim macvlan Netzwerk bekommt jeder Container eine IP und eine MAC Adresse. Der Hyper-V blockt jedoch in den Standardeinstellungen mehrer MAC Adressen hinter einer virtuellen Netzwerkkarte.
Lösung MACVLAN Betrieb
Im Hyper-V Manager muss man bei der Docker Host VM das „Spoofing von MAC-Adressen aktivieren“

[…] Node-Red und ioBroker laufen bei uns in einem Docker Container unter Windows Server 2022 Hyper-V […]