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/docker
directorio 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
, devicemapper
o zfs
dependiendo de su soporte en el núcleo. En la mayoría de los lugares esto será, aufs
pero los RedHats se fuerondevicemapper
.
Puede configurar manualmente el controlador de almacenamiento con la opción -s
o--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 json
y 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-aufs
es 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 info
y encuentre la ubicación real específica para su configuración .
Docker for Mac
con 2 imágenes de 1,5 GB cada una y /var/lib
no 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 Mac
dos imágenes de 1.5 GB cada una y ~/Library/Containers/Data/com.docker.docker/Data
no tiene directorio com.docker.driver.amd64-linux
y el único archivo grande está en vms/0/Docker.raw
3.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/data
Archivo de metadatos:
/var/lib/docker/devicemapper/devicemapper/metadata
docker info
es muy útil, pero el resultado Docker Root Dir: /var/lib/docker
no 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\windowsfilter
para 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 run
una 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 build
comando 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 build
crea?
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.qcow2
encontré 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 build
comando. 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 info
comando 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/docker
está 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 --format
pará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 overlay2
como 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 build
comando?
En Fedora, Docker usa LVM para almacenamiento si está disponible. En mi sistema docker info
muestra:
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.yml
configuració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 up
finalmente tuve /tmp/host-volume
desde 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.