Get path and access volumes in Docker for Mac

If you use persistent data volumes in Docker, you might want to access them via command-line. If your docker host is Linux, that’s not a problem; you can find Docker volumes by /var/lib/docker/volumes path.

However, that’s not the case when you use Docker for Mac. Try to cd /var/lib/docker/volumes from your MacOS terminal, and you’ll get nothing. You see, your Mac machine isn’t a real Docker host. Docker for Mac runs a virtual machine behind the scenes and hides it from you to make things simpler. Simpler, unless you want to dig deeper.

So, to access persistent volumes created by Docker for Mac, you need to log in that hidden virtual machine first, which is not that straightforward.

In order to accomplish this, we need to use a serial terminal on Mac. There’s a terminal application called `screen` that’s going to help us.

  • We need to “screen into” the Docker driver by executing a command: 
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
  • You should see a blank screen, just press Enter and after a while, you should see a command line prompt
  • Now you’re inside Docker’s VM and you can cd into volumes dir by typing: 
cd /var/lib/docker/volumes
  • Profit, you got there! (To detach from screen press ctrl+a ctrl+d or to exit press ctrl+a ctrl+\ )
  • If you need to transfer files from your MacOS host into Docker host (for example to put files into docker volumes) use directories shared between host (mac os) and Docker host (Docker VM), you can find a list of such directories under File Sharing tab of your Docker for Mac application.

Hope this helps someone!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s