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“
Docker und Portainer auf Hyper-V Nested mit Macvlan: Maximale Flexibilität für Container-Management
Containerisierung hat die Art und Weise revolutioniert, wie Anwendungen entwickelt, bereitgestellt und verwaltet werden. Docker gilt als einer der führenden Akteure in diesem Bereich und ermöglicht die einfache Isolierung und Bereitstellung von Anwendungen in Containern. Hyper-V Nested Virtualization ist eine erweiterte Virtualisierungstechnologie von Microsoft, die es ermöglicht, virtuelle Maschinen (VMs) innerhalb von VMs auszuführen. Wenn Sie Docker und Portainer in einer Hyper-V Nested-Umgebung mit Macvlan konfigurieren, erhalten Sie eine leistungsstarke und flexible Lösung für das Container-Management.
Hyper-V Nested Virtualization: Eine kurze Einführung
Hyper-V Nested Virtualization ist ein Feature in Windows Server 2016 und Windows 10, das es ermöglicht, virtuelle Maschinen innerhalb einer VM auszuführen. Dies ist besonders nützlich für Entwickler und Systemadministratoren, die Test- oder Entwicklungsumgebungen erstellen möchten, ohne physische Hardware verwenden zu müssen.
Docker: Containerisierung vereinfacht
Docker ist eine Open-Source-Plattform, die es Entwicklern ermöglicht, Anwendungen in Containern zu erstellen, bereitzustellen und auszuführen. Container sind leichtgewichtige, eigenständige Einheiten, die alle erforderlichen Abhängigkeiten und Konfigurationen enthalten. Docker bietet eine konsistente Umgebung, die das Entwickeln und Testen von Anwendungen vereinfacht und die Bereitstellung auf verschiedenen Plattformen nahtlos gestaltet.
Portainer: Das grafische Frontend für Docker
Portainer ist ein leistungsstarkes Open-Source-Tool, das das Management von Docker-Containern erleichtert. Es bietet ein benutzerfreundliches, webbasiertes Dashboard, das die Verwaltung von Containern, Volumes, Netzwerken und mehr ermöglicht. Portainer ist eine großartige Ergänzung zu Docker, da es die Konfiguration und Überwachung von Containern vereinfacht.
Macvlan: Netzwerkkonnektivität auf Container-Ebene
Macvlan ist ein Mechanismus in Docker, der es Containern ermöglicht, direkt in das physische Netzwerk einzutauchen, als wären sie eigenständige physische Maschinen. Dies bietet maximale Flexibilität und Leistung, da jeder Container eine eigene IP-Adresse im physischen Netzwerk erhalten kann und direkt mit anderen Geräten kommunizieren kann.
Die Konfiguration von Docker und Portainer auf Hyper-V Nested mit Macvlan
Um Docker und Portainer in einer Hyper-V Nested-Umgebung mit Macvlan zu konfigurieren, sind einige Schritte erforderlich:
-
Hyper-V Nested Virtualization aktivieren: Stellen Sie sicher, dass die Nested Virtualization in Ihrer Hyper-V-Umgebung aktiviert ist. Dies kann in den Hyper-V-Einstellungen Ihres Windows-Servers oder Ihrer Windows-10-Maschine erfolgen.
-
Erstellen Sie eine virtuelle Maschine für Docker: Erstellen Sie eine VM in Ihrer Hyper-V-Umgebung, auf der Docker und Portainer ausgeführt werden sollen. Stellen Sie sicher, dass Sie ausreichend Ressourcen wie CPU, RAM und Speicherplatz zur Verfügung haben.
-
Installieren Sie ein geeignetes Linux-Betriebssystem: Da Docker nativ auf Linux läuft, benötigen Sie ein Linux-Betriebssystem in Ihrer VM. Beliebte Optionen sind Ubuntu, CentOS oder Debian.
-
Installieren Sie Docker: Folgen Sie den offiziellen Docker-Installationsanweisungen für Ihr Linux-Betriebssystem, um Docker auf Ihrer VM zu installieren.
-
Konfigurieren Sie Macvlan: Erstellen Sie ein Macvlan-Netzwerk in Docker, um Ihren Containern direkte Netzwerkkonnektivität zu ermöglichen. Stellen Sie sicher, dass Sie die IP-Adressierung entsprechend konfigurieren.
-
Installieren und konfigurieren Sie Portainer: Installieren Sie Portainer in Ihrer Docker-VM und konfigurieren Sie es entsprechend. Portainer bietet ein einfaches webbasiertes Setup.
-
Verwalten Sie Ihre Container mit Portainer: Nach der Konfiguration können Sie Ihre Docker-Container und -Dienste über das Portainer-Dashboard verwalten und überwachen.
Die Kombination von Docker, Portainer und Hyper-V Nested Virtualization mit Macvlan bietet maximale Flexibilität und Kontrolle über Ihre Container-Infrastruktur. Sie können Container direkt in Ihr physisches Netzwerk integrieren und gleichzeitig die Benutzerfreundlichkeit und Verwaltungsfunktionen von Portainer nutzen. Dies ermöglicht eine effiziente Entwicklung und Bereitstellung von Anwendungen in einer virtuellen Umgebung, die Ihren Anforderungen entspricht.
[…] Node-Red und ioBroker laufen bei uns in einem Docker Container unter Windows Server 2022 Hyper-V […]