Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where is /var/lib/docker on Mac/OS X

People also ask

Where is var lib docker on MacOS?

Debian: /var/lib/docker/ Windows: C:\ProgramData\DockerDesktop. MacOS: ~/Library/Containers/com.

Where can I find var lib docker?

By default, Docker stores most of its data inside the /var/lib/docker directory on Linux systems.


As mentioned in the above answers, you will find it in:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

Once you get the tty running you can navigate to /var/lib/docker


The other answers here are outdated if you're using Docker for Mac.

Here's how I was able to get into the VM. Run the command:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

This is the default path, but you may need to first do: cd ~/Library/Containers/com.docker.docker/Data/vms

and then ls to see which directory your VM is in and replace the "0" accordingly.

When you're in, you might just see a blank screen. Hit your "Enter" key.

This page explains that to exit from the VM you need to "Ctrl-a" then "d"


See this answer

When using Docker for Mac Application, it appears that the containers are stored within the VM located at:

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2


As of 2021 is the dance going, Mac Users get easily to the VM with the documented methods, and hence to the volumes.

There's a way Rocky Chen found to get inside the VM in Mac. With this you can actually inspect the famous /var/lib/docker/volumes.

docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh

Let examine the method:

  • -it goes for Keep STDIN open even if not attached + Allocate pseudo-TTY
  • --privileged "gives all capabilities to the container. Allows special cases like running docker" .
  • --pid defines to use the host VM namespace.
  • debian the actual image to use.
  • nsenter a debian's tool to run programs in different namespaces
  • -t is the target PID
  • -m mount the provided PID namespace.
  • -u enter the Unix Time Sharing (UTS) namespace.
  • -n enter the provided PID network namespace.
  • -i enter the provided PID IPC namespace.

Once run, go to /var/lib/docker/volumes/and you'll find your volumes.

The next question to address for me is:

How to take those volumes and back them up in the host?

I appreciate ideas in the comments!

UPDATE FOR VSCODE USERS

If you downloaded the Official Docker extension, sun will shine for you.

Docker Extension

Just inspect the volumes in Visual Studio Code. Right-click the files you want to have in your local, and download them. That easy!

2nd UPDATE

As of July 2021, Docker Desktop for Mac is announcing we will be able to access volumes directly from the GUI, but only for Pro and Team accounts.

enter image description here


Just as @Dmitriy said:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

and can use ctrl a + d to detach the screen

and use screen -dr to re-attach the screen again(since if you simply attach screen again, the terminal text will be garbled.)

Reference

or if you want to exit, use ctrl + a + k,then choose y to kill the screen.


some what of a zombie thread but as I just found it here is another solution that doesn't need screen nor messes up shell etc.

The path listed from a docker volume inspect <vol_name>

returns the path for the container, something like:

"Mountpoint": "/var/lib/docker/volumes/coap_service_db_data/_data"

the _data component being the last component of the path you setup in the volumes: section of the service using a given volume eg:

volumes: - db_data:/var/lib/postgresql/data , obvs your mileage will vary.

To get there on the mac the easiest method I have found is to actually start a small container running and mount the root of the host to the /docker directory in the image, this gives you access to the volumes used on the host.

docker run --rm -it -v /:/docker alpine:edge

from this point you can cd to the volume

cd /var/lib/docker/volumes/coap_service_db_data/_data