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
- List volumes:
docker volume ls - Reveal the path:
docker volume inspect <NAME> - Open the data:
sudo ls /var/lib/docker/volumes/<NAME>/_data - 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
- Open Docker Desktop and switch to Volumes to browse.
- Or, use File Explorer with the UNC path shown earlier.
- From an Ubuntu WSL shell, list the same directory:
ls -la /mnt/wsl/docker-desktop-disk/data/docker/volumes - 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
- Open Docker Desktop → Volumes to browse or export.
- 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 - - 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-datapath. 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.
