microsoft / microsoft/winget-pkgs

Docker.DockerDesktop: Custom installer switch disables Windows containers on every upgrade

Open Beginner friendly
#420,243 0 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Needs-Triage
Dominant language
No language data
Stars
11.1k
Forks
9.7k
Avg merge
1h 32m
Merged PRs (30d)
616

Description

## Summary

The Docker Desktop winget manifest (versions 4.74.0 through 4.87.0, possibly earlier) includes `--no-windows-containers` in the `Custom` installer switch, which **silently disables Windows containers** on every `winget install` or `winget upgrade` of Docker Desktop.

## Affected manifests

All recent versions use this pattern (checked 4.84.0, 4.85.0, 4.86.0, 4.87.0):

```yaml
InstallerSwitches:
Silent: install --quiet
SilentWithProgress: install --quiet
Interactive: install
Custom: --accept-license --backend=wsl-2 --no-windows-containers
```

Version 4.73.0 does **not** have this — the `Custom` and `Interactive` keys are absent entirely. The change was introduced when the manifest tooling switched from `wingetcreate` to `komac v2.16.0`.

## Impact

- The `--no-windows-containers` flag writes `"noWindowsContainers": true` into `C:\ProgramData\DockerDesktop\install-settings.json`
- This permanently disables Windows containers integration — the "Switch to Windows containers" tray menu item disappears, and `docker desktop engine use windows` returns `unable to set engine to "windows": engine is disabled`
- The flag is **sticky**: once set, it persists across subsequent upgrades (even ones that don't pass the flag) because the installer reads and preserves existing `install-settings.json` values
- There is no corresponding "enable" flag — the only fix is to manually edit `install-settings.json`
- This affects anyone using `winget upgrade` for Docker Desktop, including automated tools like topgrade

## Expected behavior

The `Custom` switch should not include `--no-windows-containers` by default. This flag is a security hardening option that should be opt-in, not forced on all winget users. Per Docker's own documentation:

> `--no-windows-containers`: Disables the Windows containers integration. This can improve security.

Users on Windows Pro/Enterprise who need Windows containers (a supported Docker Desktop feature on all-users installs) should not have this silently disabled on every upgrade.

## Suggested fix

Remove `--no-windows-containers` from the `Custom` switch in current and future manifests:

```yaml
InstallerSwitches:
Silent: install --quiet
SilentWithProgress: install --quiet
Interactive: install
Custom: --accept-license --backend=wsl-2
```

Or remove `Custom` entirely and let the installer use its own defaults (as 4.73.0 did).

## Reproduction

```powershell
# On Windows Pro/Enterprise with Hyper-V and Containers features enabled:
winget upgrade Docker.DockerDesktop --accept-source-agreements

# After upgrade completes:
docker desktop engine use windows
# Returns: unable to set engine to "windows": engine is disabled

# Verify:
Get-Content C:\ProgramData\DockerDesktop\install-settings.json
# Shows: "noWindowsContainers": true
```

## Environment

- Windows 11 Business (Pro), Build 26200 (25H2)
- Docker Desktop 4.87.0 (latest affected)
- winget v1.x (standard)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Search the winget-pkgs manifests for Docker.DockerDesktop and inspect the InstallerSwitches entries across the affected versions, comparing them with 4.73.0. Remove the forced --no-windows-containers option from current and future manifest data, then run the repository's manifest validation or installer checks to confirm the switches remain valid.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker
Domain
tooling
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.