Where are Docker images stored on the host machine?
I managed to find the containers under directory /var/lib/docker/containers
, but I can't find the images.
What are the directories and files under /var/lib/docker
?
The contents of the /var/lib/docker
directory vary depending on the driver Docker is using for storage.
By default this will be aufs
but can fall back to overlay
, overlay2
, btrfs
, devicemapper
or zfs
depending on your kernel support. In most places this will be aufs
but the RedHats went with devicemapper
.
You can manually set the storage driver with the -s
or --storage-driver=
option to the Docker daemon.
-
/var/lib/docker/{driver-name}
will contain the driver specific storage for contents of the images. -
/var/lib/docker/graph/<id>
now only contains metadata about the image, in thejson
andlayersize
files.
In the case of aufs
:
-
/var/lib/docker/aufs/diff/<id>
has the file contents of the images. -
/var/lib/docker/repositories-aufs
is a JSON file containing local image information. This can be viewed with the commanddocker images
.
In the case of devicemapper
:
-
/var/lib/docker/devicemapper/devicemapper/data
stores the images -
/var/lib/docker/devicemapper/devicemapper/metadata
the metadata - Note these files are thin provisioned "sparse" files so aren't as big as they seem.
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
UPDATE (Courtesy of mmorin):
As of Jan 15 2019 it seems there is only this file:
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
that contains the Docker Disk and all the images and containers within it.
Actually, Docker images are stored in two files as shown by following command
$ docker info
Data file:
/var/lib/docker/devicemapper/devicemapper/data
Metadata file:
/var/lib/docker/devicemapper/devicemapper/metadata
this was the old way of doing, now it has changed. Disregard this answer as of 2019
In the special case of Mac OS X or Windows, using boot2docker, your Docker images are stored within a VirtualBox VM managed by boot2docker.
This VM will be stored in normal place of VirtualBox images:
OS X: ~/VirtualBox VMs/boot2docker-vm
Windows: %USERPROFILE%/VirtualBox VMs/boot2docker-vm
You can reset it by running (WARNING: This will destroy all images you've built and downloaded so far):
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
This is especially useful if you kept tons of intermediate images when building / debugging a build without the useful --rm options, I quote them here for reference: Use:
docker build -t webapp --rm=true --force-rm=true .
instead of:
docker build -t webapp .