Snippet / Featured Summary

On Windows 11, Docker Desktop stores all images and containers inside a WSL2 virtual disk (ext4.vhdx) belonging to the docker-desktop-data distribution. If this distribution is initialized with wsl --import before Docker pulls its first image, Docker data can be permanently stored on a non-system drive (such as F:) without later migration.


1. Why Docker Desktop Gradually Consumes C Drive Space

Many Windows users encounter the same pattern after installing Docker Desktop:

  • Docker works normally at first
  • The C drive steadily loses free space
  • Docker settings show no obvious “data directory”
  • Even installing Docker Desktop on D or F drive does not help

This behavior is not accidental and not a bug. It is a direct result of Docker Desktop’s WSL2-based architecture.

Understanding that architecture is the key to solving the problem permanently.


2. How Docker Desktop Actually Runs on Windows 11

2.1 Docker Does Not Run Natively on Windows

On Windows 11, Docker Desktop uses WSL2 (Windows Subsystem for Linux) as its runtime backend. This means:

  • Docker Engine runs inside a Linux kernel
  • The Linux kernel is provided by WSL2
  • Docker filesystems are not Windows directories

This is clearly visible in real Docker output:

Operating System: Docker Desktop
Kernel Version: 6.6.87.2-microsoft-standard-WSL2
Docker Root Dir: /var/lib/docker

Key implications:

  • /var/lib/docker exists inside Linux
  • Windows only sees a virtual disk file
  • File Explorer cannot show Docker’s real storage layout

2.2 The Two WSL Distributions Used by Docker Desktop

Running the following command:

wsl --list -v

reveals two Docker-related distributions:

Distribution Name Purpose Stores Data
docker-desktop Runs Docker Engine No
docker-desktop-data Stores images, containers, volumes Yes

The most important detail is this:

docker-desktop-data is NOT created during Docker Desktop installation.

It is created only when Docker writes data for the first time, such as when pulling an image.


3. The Ideal “Clean Start” State

The following state is optimal and often overlooked:

wsl --list -v

NAME              STATE     VERSION
docker-desktop    Running   2

And:

docker info
Images: 0
Containers: 0

This means:

  • Docker Desktop is installed and running
  • No images or containers exist
  • docker-desktop-data has not been created yet
  • No Docker data exists on the C drive

At this moment, storage decisions can be made with zero migration cost.


4. Why Ubuntu, Microsoft Store, and Online Downloads Are Not Required

Common detours include:

  • Installing Ubuntu via wsl --install
  • Downloading Linux from Microsoft Store
  • Searching for Ubuntu ISO or mirror sites

For this scenario, all of that is unnecessary.

Why?

Because:

docker-desktop-data is not a user-facing Linux environment.
It is purely a data container.

It only needs:

  • A valid Linux root filesystem
  • Enough structure to initialize an ext4 disk

No desktop, no shell, no login is required.


5. What wsl --import Actually Does

The wsl --import command performs three actions:

  1. Creates a new WSL distribution
  2. Extracts a Linux root filesystem into a target directory
  3. Generates an ext4.vhdx virtual disk

Command structure:

wsl --import <DistroName> <InstallLocation> <RootfsTar> --version 2

As long as:

  • The rootfs archive is valid
  • The target directory exists
  • File paths are correct

the import will succeed.


6. A Real-World Failure Case: Filename Mismatch

Consider the following directory listing:

F:\Docker>dir

2026/01/13  08:43   116,065,444  ubuntu-rootfs.tar..xz

Notice the filename:

ubuntu-rootfs.tar..xz
                ↑↑

There are two dots before xz.

If the import command uses:

wsl --import docker-desktop-data F:\Docker\data F:\Docker\ubuntu-rootfs.tar.xz --version 2

WSL correctly returns:

ERROR_FILE_NOT_FOUND

This error:

  • Is not related to Docker
  • Is not related to WSL configuration
  • Is purely a path and filename mismatch

7. Correct Import Command (Verified)

Given:

  • Target directory: F:\Docker\data
  • Rootfs file: ubuntu-rootfs.tar..xz

The correct command is:

wsl --import docker-desktop-data F:\Docker\data F:\Docker\ubuntu-rootfs.tar..xz --version 2

Expected Behavior on Success

  • No output
  • Immediate return to the command prompt
  • No warning or error messages

Silence indicates success.


8. How to Verify That Docker Data Is Truly on F Drive

8.1 Confirm the WSL Distribution

wsl -l -v

Expected result:

docker-desktop
docker-desktop-data

8.2 Confirm the Physical Storage File

dir F:\Docker\data

You should see:

ext4.vhdx

This single file contains:

  • All Docker images
  • All containers
  • All Docker volumes

It is the only physical storage location Docker uses.


9. What Happens When Docker Desktop Starts

When Docker Desktop launches:

  1. It detects docker-desktop-data
  2. Mounts the ext4 filesystem
  3. Maps /var/lib/docker to that virtual disk

Running:

docker pull nginx

will then:

  • Increase space usage on F drive
  • Leave C drive usage unchanged

This confirms the storage location is locked in.


10. Frequently Asked Questions (FAQ)

Q1: What about the .wslconfig escape character warning?

This warning does not affect:

  • Distribution import
  • Docker startup
  • Docker data storage

It can be addressed later without risk.


Q2: Can Docker data be moved after initialization?

Yes, but it requires:

  • wsl --export
  • wsl --unregister
  • Re-importing the distribution

Doing this before first use avoids all migration complexity.


Q3: Why doesn’t Docker Desktop provide a GUI option for data location?

Because:

  • Docker Desktop does not manage ext4 disks directly
  • Storage is owned by WSL2
  • Docker only sees /var/lib/docker, not the host filesystem

11. Why This Approach Is a Long-Term Solution

From an engineering perspective, this method:

  • Uses native WSL mechanisms only
  • Avoids undocumented configuration changes
  • Survives Docker Desktop upgrades
  • Survives Windows updates

Once completed:

  • Docker growth never affects C drive
  • Storage behavior remains predictable
  • No maintenance is required

12. Final Thoughts

Docker Desktop on Windows is not opaque—it is layered.

Once you understand:

  • When docker-desktop-data is created
  • What ext4.vhdx represents
  • How wsl --import initializes storage

you can make a one-time architectural decision that remains valid for the entire lifetime of your system.

This is not a workaround.
It is correct usage of the underlying platform.