About this project

Dockur Windows is a Docker/Podman container image that lets you run Windows inside a container. It automates downloading and installing the selected Windows version, then provides access through a web viewer on port 8006 and via Microsoft Remote Desktop (RDP). Key features: - Runs Windows inside a Docker container - Automatic download and hands-free installation - Supports modern and legacy Windows releases, from Windows 95 to Windows 11, plus Windows Server 2003-2025 and some community variants such as Tiny11 and ReactOS - Near-native performance with KVM acceleration - Customizable CPU, memory, and storage allocation - Dynamic memory allocation with memory ballooning - USB passthrough and host folder sharing - Supports NAT, user-mode, macvlan, and macvtap networking - Optional audio streaming to the browser - Can join an Active Directory domain during installation - Can run custom commands or an install.bat script after installation Requirements: - Docker or Podman on a Linux host with KVM support - Docker Desktop or Podman Desktop on Windows 11 with nested virtualization enabled - At least 2 GB of available RAM - At least 32 GB of free disk space Docker Desktop on Linux, macOS, and Windows 10 is not supported because it does not provide KVM access to containers. Basic Docker Compose usage: ```yaml services: windows: image: dockurr/windows container_name: windows environment: VERSION: "11" devices: - /dev/kvm - /dev/net/tun cap_add: - NET_ADMIN ports: - 8006:8006 - 3389:3389/tcp - 3389:3389/udp volumes: - ./windows:/storage restart: always stop_grace_period: 2m ``` After starting the container, open http://127.0.0.1:8006/ in a browser and wait for the automatic installation to finish. Default RDP credentials are username `Docker` and password `admin`, which can be customized with `USERNAME` and `PASSWORD` environment variables. Common environment variables include: - `VERSION` — selects the Windows version, for example `11`, `10`, `2022`, or a custom ISO URL - `LANGUAGE` — selects the installation language - `RAM_SIZE` and `CPU_CORES` — adjust allocated resources - `DISK_SIZE` — changes the default 64 GB disk size - `DISK2_SIZE` / `DISK3_SIZE` — adds additional disks - `AUDIO` — enables browser audio streaming - `DOMAIN` and `DOMAIN_OU` — automatic Active Directory domain join - `DHCP` — lets Windows request an IP directly from the router - `ARGUMENTS` — passes extra QEMU arguments, for example for USB device passthrough Storage can be changed with a bind mount to `/storage`. A folder bound to `/shared` appears on the Windows desktop as `Shared` and as drive `Z:`. An ISO can be mounted at `/custom.iso` to install an unsupported image, or a URL can be provided through `VERSION`. The project notes that macvlan networking prevents the container IP from being accessible from the Docker host, and that USB mass storage devices should be kept disconnected during the first launch to avoid accidental formatting. The project contains only open-source code and does not distribute Windows itself. Product keys found in the code are generic installation keys published by Microsoft for trial purposes and are not valid activation licenses. Users are responsible for having a valid Windows license.