Windows in einem Docker-Container.
Über Docker Compose:
services :
windows :
image : dockurr/windows
container_name : windows
environment :
VERSION : " 11 "
devices :
- /dev/kvm
cap_add :
- NET_ADMIN
ports :
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
stop_grace_period : 2m
Über die Docker-CLI:
docker run -it --rm -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
Über Kubernetes:
kubectl apply -f kubernetes.yml
Ganz einfach! Dies sind die Schritte:
Starten Sie den Container und stellen Sie über Ihren Webbrowser eine Verbindung zu Port 8006 her.
Lehnen Sie sich zurück und entspannen Sie sich, während die Magie geschieht. Die gesamte Installation erfolgt vollautomatisch.
Sobald Sie den Desktop sehen, ist Ihre Windows-Installation einsatzbereit.
Genießen Sie Ihre brandneue Maschine und vergessen Sie nicht, dieses Repo zu markieren!
Standardmäßig wird Windows 11 installiert. Sie können Ihrer Compose-Datei jedoch die Umgebungsvariable VERSION
hinzufügen, um eine alternative Windows-Version anzugeben, die heruntergeladen werden soll:
environment :
VERSION : " 11 "
Wählen Sie aus den folgenden Werten:
Wert | Version | Größe |
---|---|---|
11 | Windows 11 Pro | 5,4 GB |
11l | Windows 11 LTSC | 4,2 GB |
11e | Windows 11 Enterprise | 5,8 GB |
10 | Windows 10 Pro | 5,7 GB |
10l | Windows 10 LTSC | 4,6 GB |
10e | Windows 10 Enterprise | 5,2 GB |
8 | Windows 8.1 Pro | 4,0 GB |
8e | Windows 8.1 Enterprise | 3,7 GB |
7e | Windows 7 Enterprise | 3,0 GB |
ve | Windows Vista Enterprise | 3,0 GB |
xp | Windows XP Professional | 0,6 GB |
2025 | Windows Server 2025 | 5,0 GB |
2022 | Windows Server 2022 | 4,7 GB |
2019 | Windows Server 2019 | 5,3 GB |
2016 | Windows Server 2016 | 6,5 GB |
2012 | Windows Server 2012 | 4,3 GB |
2008 | Windows Server 2008 | 3,0 GB |
2003 | Windows Server 2003 | 0,6 GB |
Tipp
Um ARM64-Versionen von Windows zu installieren, verwenden Sie dockur/windows-arm.
Um den Speicherort zu ändern, fügen Sie den folgenden Bind-Mount in Ihre Compose-Datei ein:
volumes :
- /var/win:/storage
Ersetzen Sie den Beispielpfad /var/win
durch den gewünschten Speicherordner.
Um die Standardgröße von 64 GB zu erweitern, fügen Sie die Einstellung DISK_SIZE
zu Ihrer Erstellungsdatei hinzu und legen Sie sie auf Ihre bevorzugte Kapazität fest:
environment :
DISK_SIZE : " 256G "
Tipp
Dies kann auch verwendet werden, um die Größe der vorhandenen Festplatte ohne Datenverlust auf eine größere Kapazität zu ändern.
Öffnen Sie den „Datei-Explorer“ und klicken Sie auf den Abschnitt „Netzwerk“. Sie sehen einen Computer namens host.lan
. Doppelklicken Sie darauf und es wird ein Ordner namens Data
angezeigt, der über die Compose-Datei an jeden Ordner auf Ihrem Host gebunden werden kann:
volumes :
- /home/user/example:/data
Der Beispielordner /home/user/example
ist als \host.lanData
verfügbar.
Tipp
Sie können diesen Pfad für einen einfacheren Zugriff einem Laufwerksbuchstaben in Windows zuordnen.
Um ein nicht unterstütztes ISO-Image herunterzuladen, das nicht aus der Liste oben ausgewählt werden kann, geben Sie die URL dieser ISO in der Umgebungsvariablen VERSION
an, zum Beispiel:
environment :
VERSION : " https://example.com/win.iso "
Alternativ können Sie den Download auch überspringen und stattdessen eine lokale Datei verwenden, indem Sie sie auf folgende Weise in Ihre Compose-Datei einbinden:
volumes :
- /home/user/example.iso:/custom.iso
Ersetzen Sie den Beispielpfad /home/user/example.iso
durch den Dateinamen Ihrer gewünschten ISO-Datei, der Wert von VERSION
wird in diesem Fall ignoriert.
Um Ihr eigenes Skript nach der Installation auszuführen, können Sie eine Datei namens install.bat
erstellen und diese zusammen mit allen zusätzlich benötigten Dateien (z. B. zu installierende Software) in einem Ordner ablegen. Binden Sie dann diesen Ordner wie folgt in Ihre Compose-Datei ein:
volumes :
- /home/user/example:/oem
Der Beispielordner /home/user/example
wird während der Installation nach C:OEM
kopiert und die enthaltende install.bat
wird im letzten Schritt ausgeführt.
Bleiben Sie am besten bei der automatischen Installation, da diese verschiedene Einstellungen anpasst, um häufige Probleme beim Ausführen von Windows in einer virtuellen Umgebung zu vermeiden.
Wenn Sie jedoch darauf bestehen, die Installation manuell durchzuführen, fügen Sie die folgende Umgebungsvariable zu Ihrer Compose-Datei hinzu:
environment :
MANUAL : " Y "
Standardmäßig darf der Container maximal 2 CPU-Kerne und 4 GB RAM verwenden.
Wenn Sie dies anpassen möchten, können Sie die gewünschte Menge mithilfe der folgenden Umgebungsvariablen festlegen:
environment :
RAM_SIZE : " 8G "
CPU_CORES : " 4 "
Standardmäßig wird während der Installation ein Benutzer namens Docker
mit einem leeren Passwort erstellt.
Wenn Sie andere Anmeldeinformationen verwenden möchten, können Sie diese in Ihrer Compose-Datei ändern:
environment :
USERNAME : " bill "
PASSWORD : " gates "
Standardmäßig wird die englische Version von Windows heruntergeladen. Sie können Ihrer Compose-Datei jedoch die Umgebungsvariable LANGUAGE
hinzufügen, um eine alternative Sprache anzugeben:
environment :
LANGUAGE : " French "
Sie können wählen zwischen: ?? Arabisch, ?? Bulgarisch, ?? Chinesisch, ?? Kroatisch, ?? Tschechisch, ?? Dänisch, ?? Niederländisch, ?? Englisch, ?? Estnisch, ?? Finnisch, ?? Französisch, ?? Deutsch, ?? Griechisch, ?? Hebräisch, ?? Ungarisch, ?? Italienisch, ?? Japanisch, ?? Koreanisch, ?? Lettisch, ?? Litauisch, ?? Norwegisch, ?? Polnisch, ?? Portugiesisch, ?? Rumänisch, ?? Russisch, ?? Serbisch, ?? Slowakisch, ?? Slowenisch, ?? Spanisch, ?? Schwedisch, ?? Thailändisch, ?? Türkisch und ?? Ukrainisch.
Wenn Sie ein Tastaturlayout oder Gebietsschema verwenden möchten, das nicht dem Standard für Ihre ausgewählte Sprache entspricht, können Sie die Variablen KEYBOARD
und REGION
mit einem Kulturcode wie folgt hinzufügen:
environment :
REGION : " en-US "
KEYBOARD : " en-US "
Notiz
Eine Änderung dieser Werte hat keine Auswirkung, nachdem die Installation bereits durchgeführt wurde. Verwenden Sie in diesem Fall die Systemsteuerung in Windows.
Der Web-Viewer ist hauptsächlich für die Verwendung während der Installation gedacht, da die Bildqualität schlecht ist und er beispielsweise weder Audio noch Zwischenablage hat.
Für ein besseres Erlebnis können Sie also mit jedem Microsoft Remote Desktop-Client eine Verbindung zur IP des Containers herstellen, indem Sie den Benutzernamen Docker
verwenden und das Passwort leer lassen.
Es gibt einen RDP-Client für Android im Play Store und einen für iOS im Apple Store. Für Linux können Sie FreeRDP verwenden und unter Windows geben Sie einfach mstsc
in das Suchfeld ein.
Standardmäßig verwendet der Container ein Bridge-Netzwerk, das die IP-Adresse mit dem Host teilt.
Wenn Sie dem Container eine individuelle IP-Adresse zuweisen möchten, können Sie wie folgt ein Macvlan-Netzwerk erstellen:
docker network create -d macvlan
--subnet=192.168.0.0/24
--gateway=192.168.0.1
--ip-range=192.168.0.100/28
-o parent=eth0 vlan
Stellen Sie sicher, dass Sie diese Werte an Ihr lokales Subnetz anpassen.
Nachdem Sie das Netzwerk erstellt haben, ändern Sie Ihre Compose-Datei so, dass sie wie folgt aussieht:
services :
windows :
container_name : windows
....
networks :
vlan :
ipv4_address : 192.168.0.100
networks :
vlan :
external : true
Ein zusätzlicher Vorteil dieses Ansatzes besteht darin, dass Sie keine Portzuordnung mehr durchführen müssen, da alle Ports standardmäßig verfügbar gemacht werden.
Wichtig
Auf diese IP-Adresse kann vom Docker-Host aufgrund des Designs von macvlan nicht zugegriffen werden, das keine Kommunikation zwischen den beiden zulässt. Wenn dies ein Problem darstellt, müssen Sie als Problemumgehung ein zweites MacVLAN erstellen.
Nach der Konfiguration des Containers für macvlan ist es möglich, dass Windows Teil Ihres Heimnetzwerks wird, indem es eine IP von Ihrem Router anfordert, genau wie ein echter PC.
Um diesen Modus zu aktivieren, fügen Sie Ihrer Compose-Datei die folgenden Zeilen hinzu:
environment :
DHCP : " Y "
devices :
- /dev/vhost-net
device_cgroup_rules :
- ' c *:* rwm '
Notiz
In diesem Modus haben der Container und Windows jeweils ihre eigenen separaten IPs.
Um zusätzliche Datenträger zu erstellen, ändern Sie Ihre Compose-Datei wie folgt:
environment :
DISK2_SIZE : " 32G "
DISK3_SIZE : " 64G "
volumes :
- /home/example:/storage2
- /mnt/data/example:/storage3
Es ist möglich, Festplattengeräte direkt durchzuleiten, indem Sie sie auf folgende Weise zu Ihrer Compose-Datei hinzufügen:
devices :
- /dev/sdb:/disk1
- /dev/sdc:/disk2
Verwenden Sie /disk1
wenn Sie möchten, dass es Ihr Hauptlaufwerk wird (das während der Installation formatiert wird), und verwenden Sie /disk2
und höher, um sie als sekundäre Laufwerke hinzuzufügen (die unberührt bleiben).
Um ein USB-Gerät weiterzuleiten, suchen Sie zunächst mit dem Befehl lsusb
nach dessen Hersteller- und Produkt-ID und fügen Sie diese dann wie folgt zu Ihrer Compose-Datei hinzu:
environment :
ARGUMENTS : " -device usb-host,vendorid=0x1234,productid=0x1234 "
devices :
- /dev/bus/usb
Wichtig
Wenn es sich bei dem Gerät um ein USB-Laufwerk handelt, warten Sie bitte, bis die Installation abgeschlossen ist, bevor Sie es anschließen. Andernfalls schlägt die Installation möglicherweise fehl, da die Reihenfolge der Datenträger geändert werden kann.
Nur Linux und Windows 11 unterstützen die KVM-Virtualisierung, macOS und Windows 10 leider nicht.
Sie können unter Linux die folgenden Befehle ausführen, um Ihr System zu überprüfen:
sudo apt install cpu-checker
sudo kvm-ok
Wenn Sie von kvm-ok
eine Fehlermeldung erhalten, dass KVM nicht verwendet werden kann, überprüfen Sie bitte, ob:
Die Virtualisierungserweiterungen ( Intel VT-x
oder AMD SVM
) sind in Ihrem BIOS aktiviert.
Sie haben die „verschachtelte Virtualisierung“ aktiviert, wenn Sie den Container in einer virtuellen Maschine ausführen.
Sie nutzen keinen Cloud-Anbieter, da die meisten von ihnen keine verschachtelte Virtualisierung für ihre VPS zulassen.
Wenn Sie von kvm-ok
keine Fehlermeldung erhalten, der Container sich aber weiterhin über KVM beschwert, prüfen Sie bitte, ob:
Sie verwenden nicht „Docker Desktop für Linux“, da es KVM nicht unterstützt, sondern nutzen stattdessen direkt die Docker Engine.
Es könnte hilfreich sein, privileged: true
zu Ihrer Compose-Datei (oder sudo
zu Ihrem docker run
-Befehl) hinzuzufügen, um Berechtigungsprobleme auszuschließen.
Sie können dafür Dockur/Macos verwenden. Es verfügt über viele der gleichen Funktionen, mit Ausnahme der automatischen Installation.
Ja, dieses Projekt enthält nur Open-Source-Code und verbreitet kein urheberrechtlich geschütztes Material. Bei allen im Code gefundenen Produktschlüsseln handelt es sich lediglich um generische Platzhalter, die von Microsoft zu Testzwecken bereitgestellt werden. Daher gilt dieses Projekt nach allen geltenden Gesetzen als legal.
Die Produktnamen, Logos, Marken und anderen Marken, auf die in diesem Projekt Bezug genommen wird, sind Eigentum ihrer jeweiligen Markeninhaber. Dieses Projekt ist nicht mit der Microsoft Corporation verbunden, wird von ihr gesponsert oder unterstützt.