dockur/windows runs a full copy of Windows inside a Docker container. Start it with one command, open port 8006 in a browser, and watch it download the official Windows image from Microsoft, install itself without any clicks, and land on a desktop. After that you can keep using the browser viewer or connect with any Remote Desktop client for clipboard sharing and better speed.
Under the hood it is QEMU with KVM acceleration, so performance is close to native on a Linux host. You pick the version with one setting: Windows 11, 10, LTSC and Enterprise editions, Server 2025 back to 2003, and even XP, 98 and 95 for nostalgia. Options cover CPU, RAM and disk size, shared folders, USB passthrough, a custom ISO, a command to run after install, and joining a domain. Desktop projects such as WinBoat and WinApps use it as their engine to run Windows apps on Linux.
It is MIT-licensed, with about 53,700 stars and 34 contributors, at v6.06 when scanned. A sister project, dockur/macos, does the same for macOS.
- Repository: github.com/dockur/windows
- Licence: MIT (MIT License)
- Language: Shell. Stars: 53.7K. Forks: 5,015. Last push: Oct 8, 2026.
- Scan: safe, Oct 19, 2026, commit 013ea27
Who it is for
Linux users who need a Windows app now and then, developers and testers who want a disposable Windows machine, and home-lab users who prefer containers to a separate virtual machine manager.
Getting started
1. Start Windows 11 (Linux host with KVM)
docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows2. Watch the installation and use the desktop in your browser
open http://127.0.0.1:8006Needs Docker or Podman on a Linux host with KVM, or Windows 11 with nested virtualisation, plus at least 2 GB of RAM and 32 GB of disk. Docker Desktop on macOS and Windows 10 cannot give containers KVM and is not supported. Set USERNAME and PASSWORD in the environment before the first start to replace the default account.
Safety scan
We cloned dockur/windows at commit 013ea27 on Oct 19, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.
- No secrets, no suspicious code patterns and no committed binaries across 121 files and about 25,000 lines, mostly shell and Windows batch scripts.
- Windows images come from Microsoft's own download servers. When those cannot be reached, the scripts fall back to community mirrors (dl.bobpony.com, files.dog, archive.org and a few others) for specific versions, and check each file against a SHA-256 hash and size written into the script. The product keys in the code are Microsoft's generic install keys, not activations.
- The default Windows account is user Docker with password admin, and the example compose file publishes the RDP port 3389 on every interface. Set your own USERNAME and PASSWORD, or bind the ports to 127.0.0.1, before running it anywhere other people can reach.
- The container needs /dev/kvm, /dev/net/tun and the NET_ADMIN capability, which is what a virtual machine requires but more access than an ordinary container gets. The image builds on the same maintainer's qemux/qemu base image and downloads virtio drivers from its own release, which this scan of the windows repository does not cover.
- 9 workflows, none using pull_request_target; none of the 17 third-party actions is pinned to a commit. Licence, Dependabot and Renovate present; no security policy or contributing guide.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | None found. |
| Suspicious code | None found. |
| Install-time code | 1 installer script |
| Committed binaries | None. |
| CI workflows | 9 workflows. None use pull_request_target. 17 of 17 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 16 distinct hosts referenced from source; most often www.google.com, software-static.download.prss.microsoft.com, github.com, software-download.microsoft.com. No URLs to bare IP addresses. |
| Known vulnerabilities | No lockfile to check: dependencies are declared as ranges, so what gets installed is whatever is current on the day. |
| Project hygiene | Has automated dependency updates, licence file. Missing security policy, CodeQL, contributing guide. |
| OpenSSF Scorecard | Not scored: the project is not in Scorecard's weekly index. |
The raw findings
Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.
Installer scripts (1)
- src/install.sh, 1,749 lines
By the numbers
| Stars | 53.7K |
|---|---|
| Forks | 5,015 |
| Contributors | 34 |
| Commits | 975 |
| Open issues | 12 |
| Open pull requests | 3 |
| Releases | 128 |
| Latest release | v6.06 |
| Licence | MIT |
| Main language | Shell |
| Project age | 2 years |
| Last push | Oct 8, 2026 |
| Tracked files | 121 |
| Lines of code | 25.1K |
| Checkout size | 1 MB |
Lines by language: Shell 17K, Batch 4,207, YAML 2,714, Markdown 673, JSON 505.
Questions
Is Windows in Docker free and legal?
The project is free and MIT-licensed, and it does not distribute Windows: it downloads Microsoft's own installation images. Windows itself still needs a valid licence for ongoing use, as the README says; without activation it runs with the usual limits.
Does it work on a Mac or in Docker Desktop?
Not on macOS, and not in Docker Desktop on Windows 10 or Linux, because they do not give containers access to KVM. It works on Linux with Docker or Podman and on Windows 11 with nested virtualisation turned on.
Can I play games or use a GPU in it?
Not well. It is a virtual machine with emulated graphics, so office apps, browsers and tools run fine, but 3D games and GPU-heavy software do not. For gaming, a dual boot or a VM with GPU passthrough is the better route.
This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.
