Where Are Docker Desktop Volumes Stored? | Path Cheat-Sheet

Docker Desktop volume paths live inside platform-specific locations on macOS, Windows, and Linux hosts.

If you work with persistent data in containers, you’ll want a clear map to the files backing your named volumes. The short version: Linux stores them directly on the host filesystem, while macOS and Windows tuck them inside a Docker-managed virtual disk. Below you’ll find exact paths, quick ways to open them, and safe methods to copy data in or out.

Quick Primer: What A Docker Volume Really Is

A named volume is a directory that Docker manages for you. Containers mount that directory at a path inside the container, and Docker keeps the data alive across container restarts. Volumes are the default choice for persistent state because they’re isolated from your app’s code and don’t depend on a host-specific folder layout. For a deeper reference, see Docker’s official page on Volumes.

Default Paths For Docker Desktop Volume Storage

Let’s map the defaults by operating system. These are the places where Docker keeps the folders for each named volume you create.

Linux Hosts

On native Linux, volume data lives on the host under /var/lib/docker/volumes/. Each named volume becomes a subfolder with an _data directory for the actual files. This is the well-known default in Docker’s engine.

Windows 10/11 With Docker Desktop (WSL 2 Backend)

For Linux containers on Windows, Docker stores data inside a special WSL distribution. You can browse it in File Explorer through the UNC share:

\\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes

Older setups or prior releases may show the path under \\wsl.localhost\docker-desktop-data\.... Newer releases consolidate under docker-desktop as shown above.

Docker Desktop also stores the backing virtual disk at C:\Users\<YOU>\AppData\Local\Docker\wsl. That folder holds an ext4.vhdx file with the actual Linux filesystem.

macOS With Docker Desktop

On a Mac, Docker runs Linux in a lightweight VM. Volumes live inside that VM’s virtual disk rather than on your Mac’s normal folders. You won’t see per-volume directories under /Users; instead, the data resides inside Docker’s internal disk (historically Docker.raw or earlier Docker.qcow2). You access that data through containers or the Docker Desktop UI, not by poking the raw disk file.

How To Find A Volume’s Exact Mount Path

Even if you forget the default locations, Docker can reveal the mount point of any volume. Run:

docker volume inspect <VOLUME_NAME>

Look for the Mountpoint field in the JSON output. On Linux hosts, this shows a path under /var/lib/docker/volumes/<name>/_data. On Docker Desktop (macOS or Windows), the mount point is inside the Linux VM filesystem.

Ways To Browse Or Copy Files In Volumes

Because macOS and Windows store the data inside a Linux filesystem, the safest method is to use Docker itself or the Desktop UI.

Method 1: Use The Docker Desktop “Volumes” View

Open Docker Desktop → Volumes. You can browse files, clone, export, or empty a volume right from that screen. This is the most user-friendly option and avoids path quirks. Official guide: Volumes view in Docker Desktop.

Method 2: Run A Throwaway Utility Container

Mount your volume at /data and use shell tools:

# list files
docker run --rm -it -v <VOLUME_NAME>:/data alpine ls -la /data

# copy out to a host folder (Linux host example)
docker run --rm -v <VOLUME_NAME>:/from -v "$PWD":/to alpine \
  sh -c "cd /from && tar -cf - . " | tar -xf -

Method 3 (Windows): Open The UNC Path

With Docker Desktop running, paste the UNC path into File Explorer to view volume folders:

\\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes

If you’re on an older release that still exposes the docker-desktop-data distro, try:

\\wsl.localhost\docker-desktop-data\data\docker\volumes

These paths reflect current and prior layout changes documented by community threads and tutorials.

Bind Mounts Versus Named Volumes

A quick contrast helps avoid confusion:

  • Named volumes live under Docker’s managed storage (see the OS sections above).
  • Bind mounts point to a path you choose on the host. On Linux, that’s a normal directory like /srv/postgres. On macOS and Windows, bind mounts reference host folders that Docker shares into the VM. Performance and file watching can differ from Linux. Docker’s blog post on Desktop file sharing explains trade-offs and tips.

Troubleshooting: “I Can’t Find My Data”

If a container writes into a path that’s not a named volume or bind mount, those files land in the container’s writable layer, not a reusable volume. They won’t show up under the volume directories. Inspect the container and confirm the mount points match your compose file or run command. When in doubt, list mounted volumes:

docker container inspect <CONTAINER_ID_OR_NAME> --format '{{ json .Mounts }}' | jq

On Windows, confirm Docker Desktop is running and that you can open the UNC share. If the share fails, restart Docker Desktop and check that the WSL backend is enabled by following Docker’s WSL 2 backend guide.

Practical Workflows For Each Platform

Linux: Direct Host Access

  1. List volumes: docker volume ls
  2. Reveal the path: docker volume inspect <NAME>
  3. Open the data: sudo ls /var/lib/docker/volumes/<NAME>/_data
  4. Back up quickly:
    sudo tar -C /var/lib/docker/volumes/<NAME>/_data -czf backup.tgz .

This flow keeps file ownership and permissions intact on Linux.

Windows: Browse Through WSL Or Use The UI

  1. Open Docker Desktop and switch to Volumes to browse.
  2. Or, use File Explorer with the UNC path shown earlier.
  3. From an Ubuntu WSL shell, list the same directory:
    ls -la /mnt/wsl/docker-desktop-disk/data/docker/volumes
  4. For scripted backups, export with a helper container:
    docker run --rm -v <NAME>:/from -v /mnt/c/Backups:/to alpine \
      sh -c "cd /from && tar -czf /to/<NAME>.tgz ."

The UNC path and the WSL filesystem both surface the same data, which lives inside Docker’s Linux disk image.

macOS: Use Desktop Volumes View Or A Utility Container

  1. Open Docker Desktop → Volumes to browse or export.
  2. Or, run a short-lived container and copy files out:
    # copy a volume's data to your current folder
    docker run --rm -v <NAME>:/from -v "$PWD":/to alpine \
      sh -c "cd /from && tar -cf - . " | tar -xf -
  3. Don’t try to browse the raw disk (Docker.raw) directly; let Docker handle it.

Cleanups, Space, And Moving The Storage

Pruning old images, stopped containers, and caches can reclaim space inside the disk image. On Mac, Docker’s FAQ explains how docker system prune and related commands free space in the VM.

On Windows, Docker Desktop stores that Linux filesystem in your user profile by default, but you can change the disk image location from Settings → Resources → Advanced. Community guides and threads show the current default and note recent path changes.

Common Gotchas

  • Confusing bind mounts with volumes. A bind mount points to a host directory you chose; a named volume is under Docker’s managed storage.
  • Using the wrong Windows path. Some posts reference an older docker-desktop-data path. Newer Desktop releases expose \\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes.
  • Expecting Finder to show per-volume folders on a Mac. The data is inside the VM; browse through Docker Desktop or a helper container.

Reference Table: OS, Default Location, And How To Open

Platform Default Location Practical Access
Linux Host /var/lib/docker/volumes/<VOL>/_data Open directly on the host; or use docker volume inspect.
Windows (Docker Desktop) \\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes Open the UNC path in Explorer; or use Desktop’s Volumes view.
macOS (Docker Desktop) Inside the Linux VM’s disk (Docker.raw) Use Desktop’s Volumes view or a throwaway container to browse.

Copy-Paste Helpers

Show A Volume’s Mount Point

docker volume inspect <VOLUME_NAME> --format '{{ .Mountpoint }}'

Archive A Volume To The Current Folder

# Linux host
sudo tar -C /var/lib/docker/volumes/<VOLUME_NAME>/_data -czf <VOLUME_NAME>.tgz .

# macOS / Windows (via helper container)
docker run --rm -v <VOLUME_NAME>:/from -v "$PWD":/to alpine \
  sh -c "cd /from && tar -czf /to/<VOLUME_NAME>.tgz ."

Restore From An Archive

# macOS / Windows / Linux (same helper pattern)
docker run --rm -v <VOLUME_NAME>:/to -v "$PWD":/from alpine \
  sh -c "cd /to && tar -xzf /from/<VOLUME_NAME>.tgz"

When You Should Pick A Bind Mount Instead

During local development, pointing a container at a host folder can help with live reload and editor tooling. For Desktop users, review the performance notes in Docker’s file-sharing article before aligning your stack, since file watching and I/O patterns differ from native Linux.

Takeaways

  • Linux stores volume data under /var/lib/docker/volumes/.
  • Windows keeps it inside a WSL Linux disk, browsable via \\wsl$\docker-desktop\... or the Desktop UI.
  • macOS uses an internal VM; manage data through Docker itself rather than hunting for raw files.
  • The Desktop Volumes view is the fastest way to inspect, export, or clone a volume.