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.
