Logré encontrar los contenedores en el directorio /var/lib/docker/containers, pero no puedo encontrar las imágenes.
¿En qué se encuentran los directorios y archivos /var/lib/docker?
Logré encontrar los contenedores en el directorio /var/lib/docker/containers, pero no puedo encontrar las imágenes.
¿En qué se encuentran los directorios y archivos /var/lib/docker?
Respuestas:
El contenido del /var/lib/dockerdirectorio varía según el controlador que Docker esté utilizando para el almacenamiento .
Por defecto, este será aufs, pero puede caer de nuevo a overlay, overlay2, btrfs, devicemappero zfsdependiendo de su soporte en el núcleo. En la mayoría de los lugares esto será, aufspero los RedHats se fuerondevicemapper .
Puede configurar manualmente el controlador de almacenamiento con la opción -so--storage-driver= para el demonio Docker .
/var/lib/docker/{driver-name} contendrá el almacenamiento específico del controlador para el contenido de las imágenes. /var/lib/docker/graph/<id>ahora solo contiene metadatos sobre la imagen, en los archivos jsony layersize.En el caso de aufs:
/var/lib/docker/aufs/diff/<id> tiene el contenido del archivo de las imágenes./var/lib/docker/repositories-aufses un archivo JSON que contiene información de imagen local. Esto se puede ver con el comando docker images.En el caso de devicemapper:
/var/lib/docker/devicemapper/devicemapper/data almacena las imágenes/var/lib/docker/devicemapper/devicemapper/metadata los metadatosdocker infoy encuentre la ubicación real específica para su configuración .
Docker for Maccon 2 imágenes de 1,5 GB cada una y /var/libno tiene directorio docker.
Cuando se usa la aplicación Docker para Mac, parece que los contenedores se almacenan dentro de la VM ubicada en:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
ACTUALIZACIÓN (Cortesía de mmorin ):
A partir del 15 de enero de 2019 parece que solo hay este archivo:
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
que contiene el Docker Disk y todas las imágenes y contenedores que contiene.
ubuntu, nginx) o esta es la ubicación de todos los contenedores? La pregunta original pide imágenes , no contenedores ...
Docker for Macdos imágenes de 1.5 GB cada una y ~/Library/Containers/Data/com.docker.docker/Datano tiene directorio com.docker.driver.amd64-linuxy el único archivo grande está en vms/0/Docker.raw3.6 GB.
du -hd1 ~/Library/Containers/com.docker.docker/Data/
Esta era la antigua forma de hacerlo, ahora ha cambiado. Haga caso omiso de esta respuesta a partir de 2019
En el caso especial de Mac OS X o Windows, usando boot2docker, las imágenes de Docker se almacenan en una VM VirtualBox administrada por boot2docker.
Esta VM se almacenará en el lugar normal de las imágenes de VirtualBox:
OS X: ~/VirtualBox VMs/boot2docker-vm
Ventanas: %USERPROFILE%/VirtualBox VMs/boot2docker-vm
Puede restablecerlo ejecutando (ADVERTENCIA: esto destruirá todas las imágenes que ha creado y descargado hasta ahora):
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
Esto es especialmente útil si guardaste toneladas de imágenes intermedias al compilar / depurar una compilación sin las útiles opciones --rm, las cito aquí como referencia: Uso:
docker build -t webapp --rm=true --force-rm=true .
en vez de:
docker build -t webapp .
%USERPROFILE%\.docker\machine\machines (tenga en cuenta el punto final en la ruta)
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
En realidad, las imágenes de Docker se almacenan en dos archivos como se muestra mediante el siguiente comando
$ docker info
Archivo de datos:
/var/lib/docker/devicemapper/devicemapper/dataArchivo de metadatos:
/var/lib/docker/devicemapper/devicemapper/metadata
docker infoes muy útil, pero el resultado Docker Root Dir: /var/lib/dockerno indica la ubicación de almacenamiento de la imagen (consulte la respuesta específica de Mac más arriba).
En el recientemente lanzado 'Docker para Windows', que usa Hyper-V, los datos se encuentran en el disco duro virtual de Docker:
C: \ Usuarios \ Público \ Documentos \ Hyper-V \ Discos duros virtuales \ MobyLinuxVM.vhdx
También puede abrir el 'Administrador de Hyper-V' para acceder a Docker / MobyLinuxVM.
C:\ProgramData\docker\windowsfilterpara mí. Más información: stackoverflow.com/a/39971954/188740
Las imágenes se almacenan en /var/lib/docker/graph/<id>/layer.
Tenga en cuenta que las imágenes son solo diferentes de la imagen principal. La ID principal se almacena con los metadatos de la imagen /var/lib/docker/graph/<id>/json.
Cuando eres docker rununa imagen. AUFS 'fusionará' todas las capas en un sistema de archivos utilizable.
En Ubuntu puedes "jugar" con imágenes ejecutándose
sudo baobab /var/lib/docker
En realidad, las imágenes se almacenan dentro de /var/lib/docker/aufs/diff

Para alguien que usa Docker toolbox (que usa docker-machine), las respuestas sobre boot2docker en Mac OS X no son válidas. La máquina virtual docker-máquina se llama "predeterminada" y existe en el /Users/<username>/.docker/machine/machines/default/directorio.
En Docker para Windows ( Windows nativo), el almacenamiento predeterminado del contenedor está en:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
docker buildcomando y no veo un archivo que creo que es el archivo de imagen. Veo algunas carpetas y algunos archivos de texto (por ejemplo, service.txt). ¿Qué tipo de archivo y con qué extensión de archivo docker buildcrea?
Si está utilizando Docker para MAC (no boot2docker), entonces la ubicación es/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
jasper@~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux $ ls -lh | grep Docker -rw-r--r--@ 1 jasper staff 6.3G May 25 19:20 Docker.qcow2encontré la imagen. Pero ese no es el contenedor. No verlos en este directorio de datos realmente ..
Como se respondió aquí , si está en Mac, se encuentra en
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Ampliando la respuesta de Tristan, en Windows con Hyper-V puede mover la imagen con estos pasos desde matthuisman:
En Windows 10
- Stop docker, etc.
- Escriba "Administrador de Hyper-V" en el cuadro de búsqueda de la barra de tareas y ejecútelo.
- Seleccione su PC en el panel izquierdo (el mío se llama DESKTOP-CBP **)
- Haga clic derecho en la máquina virtual correcta (la mía se llama MobyLinuxVM)
- Seleccione "Apagar" (si se está ejecutando)
- Haga clic derecho sobre él nuevamente y seleccione "Mover"
- Sigue las indicaciones
docker buildcomando. Estoy en una computadora con Windows 10. Miro en C: \ Users \ Public \ Documents \ Hyper-V \ Discos duros virtuales, pero todo lo que veo es MobyLinuxVM.vhdx. ¿Dónde se almacenan las imágenes reales?
Si tiene en cuenta que Docker todavía se está ejecutando en una VM, las rutas del sistema son relativas a la VM y no del sistema Mac Osx. Como dice todo está contenido en un archivo VM:
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Intente ejecutar la imagen Alpine con esta opción de volumen y el comando ls, puede enumerar el host VM:
docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root
Después de esto solo intente:
docker run --rm -it -v /: / vm-root alpine: edge ls -l / vm-root / var / lib / docker
Ahora puede enumerar la carpeta acoplable desde el host de VM
Yo uso el boot2docker para Docker en Mac OSX, por lo que las imágenes se almacenan en el /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk.
Puedo responder esta pregunta solo para usuarios de Ubuntu:
El directorio raíz de Docker se puede encontrar cuando ejecuta el comando docker info
El directorio Docker se dará en esta línea: " Docker Root Dir: /var/lib/docker"
Sobre las imágenes de la ventana acoplable, se almacenan dentro del directorio de la ventana acoplable:
/var/lib/docker/aufs/diff/
Recuerde que estas cosas no son iguales en todas las versiones de Docker. Actualmente, estoy usando 1.12.3.
Use el docker infocomando para mostrar información de todo el sistema y la ubicación puede variar.
Dependiendo del controlador de almacenamiento en uso, se puede mostrar información adicional, como el nombre del grupo, el archivo de datos, el archivo de metadatos, el espacio de datos utilizado, el espacio de datos total, el espacio de metadatos utilizado y el espacio de metadatos total.
El archivo de datos es donde se almacenan las imágenes y el archivo de metadatos es donde se almacenan los metadatos relacionados con esas imágenes. Cuando se ejecuta por primera vez, Docker asigna una cierta cantidad de espacio de datos y espacio de metadatos del espacio disponible en el volumen donde
/var/lib/dockerestá montado.
Aquí está el ejemplo en Ubuntu (marque el directorio raíz ):
$ docker info
...
Server Version: 18.06.1-ce
Storage Driver: aufs
Root Dir: /var/snap/docker/common/var-lib-docker/aufs
...
Docker Root Dir: /var/snap/docker/common/var-lib-docker
...
Y aquí está el ejemplo en Travis CI (ver Docker Root Dir ):
$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...
Puede usar el --formatparámetro para extraer esa información en un solo archivo, p. Ej.
$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]
o:
$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]
busque la carpeta acoplable en /var/lib
Las imágenes se almacenan en la siguiente ubicación:
/var/lib/docker/image/overlay2/imagedb/content
/var/lib/docker/image/overlay2/. También tenga en cuenta que este es el caso debido al hecho de que su motor Docker está utilizando overlay2como controlador de almacenamiento.
Entorno: Windows 10 Pro, Docker Desktop 2.0.3.0 edge
haga clic con el botón derecho en el icono de la ventana acoplable en la bandeja del sistema, seleccione configuración - avanzado:
Ubicación de la imagen del disco (editable a través del navegador):
C: \ Usuarios \ Público \ Documentos \ Hyper-V \ Discos duros virtuales \ DockerDesktop.vhdx
(está ahí: el directorio de documentos está oculto)
docker buildcomando?
En Fedora, Docker usa LVM para almacenamiento si está disponible. En mi sistema docker infomuestra:
Storage Driver: devicemapper
Pool Name: vg01-docker--pool
Pool Blocksize: 524.3 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file:
Metadata file:
Data Space Used: 9.622 GB
...
En ese caso, para aumentar el almacenamiento, deberá utilizar herramientas de línea de comandos LVM o administradores de particiones compatibles como blivet .
En Windows 2016, docker (DockerMsftProvider) usa la carpeta "windowsfilter" en la raíz de docker
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
Utiliza la carpeta "tmp" debajo de la raíz del docker para descargar los archivos y los elimina después de extraer los archivos descargados a la carpeta "windowsfilter".
No pude resolver la pregunta con Docker versión 18.09 en macos usando las respuestas anteriores e intenté nuevamente.
La única solución real para mí fue usar esta docker-compose.ymlconfiguración:
version: '3.7'
...
services:
demo-service:
volumes:
- data-volume:/var/tmp/container-volume
volumes:
data-volume:
driver: local
driver_opts:
type: none
o: bind
device: /tmp/host-volume
Después de lanzar con docker-compose upfinalmente tuve /tmp/host-volumedesde macos compartido como volumen de escritura desde el contenedor:
> docker exec -it 1234 /bin/bash
bash-4.4$ df
Filesystem 1K-blocks Used Available Use% Mounted on
...
osxfs 488347692 464780044 21836472 96% /var/tmp/container-volume
Espero que esto ayude a otros también.
De acuerdo con la guía de inicio de Docker, "su imagen construida" está "en el registro local de imágenes de Docker de su máquina".
Esto todavía es extraño para mí, porque ahora lleva a la pregunta. ¿Dónde está el registro local de imágenes Docker de mi máquina?
Sin embargo, definitivamente creo que vale la pena compartir esta información como respuesta.
Si alguien lo necesita con fines de secuencias de comandos, aquí hay una solución de una línea.
En el shell POSIX, con PCRE habilitado grep, intente:
DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
En PowerShell:
$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"
Tenga en cuenta que, en Windows 10 (a partir de 10.0.18999.1), en configuraciones predeterminadas, devuelve:
C:\ProgramData\Docker en modo "contenedores de Windows"/var/lib/docker, en modo "contenedores de Linux"DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')", pero al final es un archivo, no un directorio
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"enumere los contenidos de este directorio.