Windows Server Core Container for running Windows applications in Docker.
- Windows Server 2022 or Windows 10/11 Pro with containers feature enabled
- Docker Desktop for Windows (with Windows containers enabled)
- At least 10GB free disk space for the image
# Create directories
$dockerHome = "C:\docker\casjaysdevdocker\windows"
New-Item -ItemType Directory -Force -Path "$dockerHome\data", "$dockerHome\config"
# Run container
docker run -d `
--restart always `
--name casjaysdevdocker-windows-latest `
--hostname windows `
-e TIMEZONE="Eastern Standard Time" `
-v "$dockerHome\data:C:\data" `
-v "$dockerHome\config:C:\config" `
-p 80:80 `
casjaysdevdocker/windows:latestversion: "3.8"
services:
windows:
image: casjaysdevdocker/windows:latest
container_name: casjaysdevdocker-windows
environment:
- TIMEZONE=Eastern Standard Time
- HOSTNAME=windows
volumes:
- "C:/docker/casjaysdevdocker/windows/data:C:/data"
- "C:/docker/casjaysdevdocker/windows/config:C:/config"
ports:
- "80:80"
restart: alwaysgit clone "https://github.com/casjaysdevdocker/windows" "$env:USERPROFILE\Projects\casjaysdevdocker\windows"cd "$env:USERPROFILE\Projects\casjaysdevdocker\windows"
docker build -t casjaysdevdocker/windows:latest .This container uses winget (Windows Package Manager) or chocolatey as fallback. To install packages:
# Via pkmgr wrapper (recommended)
docker exec casjaysdevdocker-windows-latest powershell "C:/Windows/System32/pkmgr.ps1 install git.git"
docker exec casjaysdevdocker-windows-latest powershell "C:/Windows/System32/pkmgr.ps1 install nodejs"
# Direct via winget
docker exec casjaysdevdocker-windows-latest powershell "winget install git.git"C:/
├── ProgramData/
│ ├── Docker/setup/ - Setup scripts (00-init.ps1 to 07-cleanup.ps1)
│ └── template-files/ - Configuration templates
├── Windows/System32/
│ ├── entrypoint.ps1 - Container entrypoint
│ ├── pkmgr.ps1 - Package manager wrapper
│ └── pkmgr - Shell script version
├── Users/Administrator/ - User home directory
├── config/ - Configuration volume mount
└── data/ - Data volume mount
TIMEZONE- Windows timezone (default: "Eastern Standard Time")HOSTNAME- Container hostnameLANG- Language setting (default: "en-US")SERVICE_PORT- Primary service portENV_PORTS- Additional exposed ports