Skip to content

Releases: michelabboud/windows

v1.0.0 - winctl.sh Management Script

Choose a tag to compare

@michelabboud michelabboud released this 29 Jan 00:50

Windows Docker Container Management Script

This release introduces winctl.sh - a comprehensive management tool for Windows Docker containers.

Features

  • 22 Windows versions supported (Win 11/10/8/7, Vista, XP, 2000, Server 2003-2025, Tiny10/11)
  • 13+ commands: start, stop, restart, status, logs, shell, stats, build, rebuild, list, inspect, monitor, check, and more
  • Interactive menus when no version specified
  • Prerequisites checking (Docker, KVM, memory, disk)
  • JSON status caching for fast performance
  • Resource profiles: modern (8G RAM) and legacy (2G RAM)
  • Configurable restart policy: defaults to on-failure so Windows shutdown stops the container
  • ARM64 auto-detection: detects architecture and blocks unsupported versions on ARM
  • Multi-instance support: run multiple instances of the same version with auto-allocated ports
  • ISO cache: download and cache original ISOs to skip re-downloads on new instances
  • Snapshot & restore: back up and restore VM data directories
  • Topic-based help: help [commands|instances|cache|examples|config|all] with interactive menu

ISO Cache

Cache original ISOs so new instances skip the 3-6 GB download:

./winctl.sh cache download winxp       # Download original ISO to cache
./winctl.sh cache list                 # Show cached ISOs
./winctl.sh start winxp --new          # New instance uses cached ISO (no download!)
./winctl.sh cache rm winxp             # Remove cached ISO

The cache stores original (unprocessed) ISOs. When creating a new instance, the cached ISO is copied to the data directory. The container processes it locally (extract, inject drivers, answer file) without needing to re-download.

Multi-Instance Support

./winctl.sh start winxp --new              # Create winxp-1 with auto ports
./winctl.sh start winxp --new lab          # Create winxp-lab
./winctl.sh start winxp --new lab --clone  # Clone base data
./winctl.sh instances                      # List all instances
./winctl.sh destroy winxp-lab              # Remove instance

ARM64 Support

Auto-detects CPU architecture. On ARM64:

  • Only Windows 10/11 variants supported
  • Blocks unsupported versions with clear errors
  • Set WINDOWS_IMAGE=dockurr/windows-arm in .env.modern/.env.legacy

Quick Start

./winctl.sh check                  # Check prerequisites
./winctl.sh start win11            # Start Windows 11
./winctl.sh status                 # View status
./winctl.sh stop all               # Stop all running
./winctl.sh help cache             # Topic-based help

Documentation

  • See WINCTL_GUIDE.md for complete usage guide
  • Configuration via .env.modern and .env.legacy files