Home > database >  Docker compose volumes where can be found on host windows
Docker compose volumes where can be found on host windows

Time:07-11

I have docker-compose file with volumes section for given container:

video-streaming:
image: video-streaming
build:
  context: ./video-streaming
  dockerfile: Dockerfile-dev
container_name: video-streaming
volumes:
    - /tmp/history/npm-cache:/root/.npm:z

I'm running docker on windows and image is linux based. When I enter container and add file to /root/.npm and then close the container and run it again then the file is still there so this volume works. But the question is where can I find it's location on Windows host?

CodePudding user response:

You should find the volumes in C:\ProgramData\docker\volumes. The filename will be a hash, which you can check with docker inspect.

If not, then note that you are simply mounting a host directory /tmp/history/npm-cache to your container. This directory is your volume.

CodePudding user response:

When using docker for windows the question is if you are using the old Docker Toolbox or the newer ones that use WSL/WSL2

Docker Desktop configured Linux Containers and WSL/WSL2

The docker engine is actually not running on the windows, but inside the WSL instance, docker desktop makes docker commands available on the windows for ease of use. So the volumes are probably inside that WSL instance (linux)

you can find out what WSL instances you have by typing wsl -l in powershell. their file-system is available in \\\wsl$ path on windows.

In your case, the volume is not named, its in the exact location you specified for it.

/tmp/history/npm-cache but inside the WSL instance that docker engine is installed on.

Through WSL

in powershell write wsl ls /tmp/history, you should see npm-cache there.

wsl command allows piping linux commands that will be run on the actual linux wsl instance (default one) which is probably the one running the docker engine.

alternatively, you can connect to that linux by just typing wsl and going to that path cd /tmp/history

once inside the wsl instance you can write explorer.exe . to open explorer in that location (on windows)

notice that the path will always start with \\wsl$ so you can go to that path on windows and see all of you wsl instances and their file-systems, try to search for "npm-cache" in explorer, you might find it.

via Docker commands

docker volume ls will give you all of the available volumes. yours is not named, so its probably one of the 'UUID' ones. you can inspect each one to find its location (probably still inside the wsl instance) docker volume inspact {the-uuid-of-the-volume} ones you inspect it, you will see each volume has a Mountpoint field which points to the location of the volume (inside the wsl instance)

unnamed volumes are created with different permissions from your user, so you might need sudo to interact with them via the wsl terminal.

if its through windows file explorer on \\wsl$ you might not need extra permissions.

  • Related