GitHub

Windows in Docker

What is the project about?

This project allows users to run Windows operating systems inside a Docker container.

What problem does it solve?

It provides a convenient and isolated environment for running Windows, potentially for testing, development, or accessing Windows-specific applications without needing a full virtual machine or dedicated hardware. It simplifies the setup and management of Windows environments. It also allows running multiple, isolated Windows instances on a single host.

What are the features of the project?

  • ISO downloader: Automatically downloads Windows ISO images.
  • KVM acceleration: Uses Kernel-based Virtual Machine (KVM) for improved performance (on supported systems - Linux and Windows 11).
  • Web-based viewer: Provides a web interface (on port 8006) to interact with the Windows instance during installation.
  • Automatic Installation: The entire Windows installation process is fully automated.
  • Version Selection: Supports a wide range of Windows versions (from XP to Server 2025) via environment variables.
  • Customizable Disk Size: Allows users to specify the disk size for the Windows installation.
  • Host File Sharing: Enables easy file sharing between the host and the Windows container.
  • Custom ISO Support: Allows users to install from custom ISO images.
  • Post-Installation Scripting: Supports running custom scripts after the Windows installation.
  • Configurable Resources: Allows users to adjust CPU cores and RAM allocation.
  • User/Password Configuration: Allows setting custom usernames and passwords.
  • Language and Keyboard Selection: Supports multiple languages and keyboard layouts.
  • RDP Access: Supports connections via Microsoft Remote Desktop clients for a better user experience than the web viewer.
  • Network Options: Supports both bridge networking (shared IP) and macvlan networking (individual IP). DHCP can be enabled with macvlan.
  • Multiple Disks: Supports adding multiple virtual disks.
  • Disk and USB Pass-through: Allows passing through physical disks and USB devices to the container.

What are the technologies used in the project?

  • Docker: The core technology for containerization.
  • KVM: Kernel-based Virtual Machine (for virtualization acceleration).
  • QEMU: Likely used as the underlying virtualization technology (implied by KVM usage).
  • Docker Compose: For defining and managing the container setup.
  • YAML: Used for Docker Compose configuration files.
  • Bash/Shell Scripting: Likely used for automation and configuration.
  • Web Technologies: (HTML, JavaScript, etc.) for the web-based viewer.

What are the benefits of the project?

  • Isolation: Windows runs in an isolated container, preventing conflicts with the host system.
  • Portability: Easily move and deploy Windows environments across different systems.
  • Reproducibility: Consistent and repeatable Windows setups.
  • Resource Efficiency: Potentially more resource-efficient than running a full VM.
  • Automation: Automated installation and configuration save time and effort.
  • Flexibility: Supports various Windows versions and customization options.
  • Convenience: Easy access via web browser or RDP.

What are the use cases of the project?

  • Testing: Testing software compatibility with different Windows versions.
  • Development: Developing and debugging Windows applications in a controlled environment.
  • Legacy Applications: Running older Windows applications that may not be compatible with the host OS.
  • Security Research: Analyzing malware or testing security tools in a sandboxed environment.
  • Education/Training: Providing students with access to Windows environments for learning purposes.
  • Accessing Windows-Specific Tools: Using Windows-only software on a non-Windows host.
  • Server Environments: Running Windows Server instances for specific services.
windows screenshot