Windows inside a Docker container.
Find a file
2024-08-21 19:08:35 +00:00
.github Update build.yml 2024-08-21 18:27:31 +00:00
assets feat: Initial support for Windows Server 2025 (#546) 2024-05-27 16:53:00 +02:00
src build: Update VirtIO drivers to v0.1.262 (#697) 2024-08-18 18:02:59 +02:00
.dockerignore fix: Delete ISO when extraction fails (#372) 2024-04-13 16:58:04 +02:00
.gitignore build: Initial Dockerfile (#3) 2024-01-14 14:41:19 +01:00
compose.yml Update - Change files 2024-08-21 16:51:33 +01:00
Dockerfile build: Update VirtIO drivers to v0.1.262 (#697) 2024-08-18 18:02:59 +02:00
kubernetes.yml docs: Removed Kubevirt dependancy (#597) 2024-06-13 19:25:12 +02:00
license.md Create license.md 2024-01-14 17:17:26 +01:00
readme.md Update readme.md 2024-08-21 19:08:35 +00:00

Here's a rewritten version of the GitHub README with improved formatting and readability:

Windows

================

Windows inside a Docker container. A fork of Dockur's Windows project

Features

Multi-language: Support for multiple languages ISO downloader: Download and install Windows ISOs KVM acceleration: Accelerate Windows installation with KVM Web-based viewer: Access Windows via web browser Easy to configure: Simplified configuration process

Video

Youtube

Usage

Docker Compose

To use this project, create a docker-compose.yml file with the following contents:

version: '3'
services:
  windows:
    image: tj5miniop/windows
    container_name: windows
    environment:
      VERSION: "win11"
      RAM_SIZE: "4G" # Change the RAM Size
      DISK_SIZE: "64G" # Change the disk size
      CPU_CORES: "2" #Change this to Change the number of CPU Cres the VM has access to
    devices:
      - /dev/kvm
    cap_add:
      - NET_ADMIN
    ports:
      - 8006:8006
      - 3389:3389/tcp
      - 3389:3389/udp
    stop_grace_period: 2m

Then, run docker-compose up -d to start the container.


You could also locally build the image by -

cloning the repo using git

using docker build to build the image (Tip - Use the -t argument to give it a unique name in the username/image format eg - tj5miniop/windows11)

FAQ

Why do Microsoft Store, Windows Activation, and some program installations not work?

Microsoft blocks access to the Microsoft Store and some of its services, including Windows Activation and Smart Screen, from Data Center IPs.

How do I use it?

  1. Start the container and connect to http://localhost:8006 using your web browser.
  2. Wait for the installation to complete.
  3. Once you see the desktop, your Windows installation is ready for use.

How do I select the Windows version?

By default, Windows 11 will be installed. To select a different version, add the VERSION environment variable to your docker-compose.yml file:

environment:
  VERSION: "win10"

Available versions:

Value Version Size
win11 Windows 11 Pro 6.4 GB
win11e Windows 11 Enterprise 5.8 GB
win10 Windows 10 Pro 5.7 GB
... ... ...

How do I select the Windows language?

By default, the English version of Windows will be downloaded. To select a different language, add the LANGUAGE environment variable to your docker-compose.yml file:

environment:
  LANGUAGE: "French"

Available languages:

🇦🇪 Arabic, 🇧🇬 Bulgarian, 🇨🇳 Chinese, 🇭🇷 Croatian, 🇨🇿 Czech, 🇩🇰 Danish, 🇳🇱 Dutch, 🇬🇧 English, 🇪🇪 Estionian, 🇫🇮 Finnish, 🇫🇷 French, 🇩🇪 German, 🇬🇷 Greek, 🇮🇱 Hebrew, 🇭🇺 Hungarian, 🇮🇹 Italian, 🇯🇵 Japanese, 🇰🇷 Korean, 🇱🇻 Latvian, 🇱🇹 Lithuanian, 🇳🇴 Norwegian, 🇵🇱 Polish, 🇵🇹 Portuguese, 🇷🇴 Romanian, 🇷🇺 Russian, 🇷🇸 Serbian, 🇸🇰 Slovak, 🇸🇮 Slovenian, 🇪🇸 Spanish, 🇸🇪 Swedish, 🇹🇭 Thai, 🇹🇷 Turkish, and 🇺🇦 Ukrainian.

How do I connect using RDP?

The web-viewer is mainly meant to be used during installation. For a better experience, connect using any Microsoft Remote Desktop client to the IP of the container, using the username Docker and leaving the password empty.

How do I assign an individual IP address to the container?

Create a macvlan network and assign an IP address to the container:

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