Come controllare l'utilizzo dello spazio su disco per i contenitori e le immagini Docker

Contenuti

Con applicazioni containerizzate in esecuzione in ambienti sandbox, puede ser más difícil de lo frecuente rastrear problemas con aplicaciones que usan demasiado espacio de almacenamiento. fortunatamente, Docker proporciona comandos para administrar el uso del disco del contenedor.

Hacer una verificación rápida

Y si desea verificar cuánto espacio está usando Docker, puede utilizar el comando integrado docker system df, así como el comando de Linux du para obtener el tamaño de todo el directorio.

docker system df
sudo du -sh /var/lib/docker/

Este comando muestra imágenes estáticas, contenitori che hanno apportato modifiche al loro filesystem (come esempio, log files) e volumi legati ai contenitori.

Nonostante questo, questo non è del tutto esatto; qui, Ho molti contenitori in esecuzione, ma memorizzano tutti i dati in montaggi collegati sul sistema operativo host, non in volumi.

Pulizia dell'immagine Docker

Le immagini Docker sono diverse dai contenitori in esecuzione; sono i file che scarichi da Docker Hub per avviare un contenitore. Sono generalmente piuttosto grandi e contengono tutto il codice necessario per eseguire un sistema operativo di base e la sua applicazione..

Ogni versione di un'immagine è indipendente, ma è memorizzato in strati, quindi più nuove versioni non occuperanno il doppio dello spazio di archiviazione. Puoi visualizzare tutte le immagini con image ls:

immagine mobile ls

Pulirli è facile; non vuoi rimuovere le immagini dai contenitori in esecuzione, in ogni caso, ma rimuovere le vecchie immagini va bene, verranno semplicemente scaricati di nuovo quando necessario.

Puede podar todas las imágenes o quitar manualmente una por ID:

docker image prune -a
docker image rm 3a8d8f76e7f8f

Comprobación del uso del contenedor en ejecución

Los contenedores son un poco más difíciles de rastrear, dado que pueden utilizar datos de muchas formas diferentes:

  • Imagen subyacente: cada contenedor deberá almacenar su imagen, pero esta se reutiliza en todos los contenedores.
  • Capa de modificación: si un contenedor escribe en su sistema de archivos, como archivos de registro, verrà salvato in un nuovo livello sopra l'immagine sottostante. Questo è unico per ogni contenitore.
  • Volumi: i contenitori possono avere unità virtuali montate su di essi, che archiviano i dati direttamente su disco al di fuori del sistema di archiviazione Docker.
  • Supporti di collegamento: i contenitori possono facoltativamente entrare direttamente nelle directory sull'host.

Tutto quanto, tranne i montaggi dei collegamenti, verrà visualizzato in docker system df produzione. Se vuoi vedere le statistiche di ogni contenitore, Docker fornisce un marchio per il ps comando per elencare l'utilizzo:

docker ps --size

Qui, questo mostra la dimensione sul disco, così come la dimensione virtuale (che include l'immagine sottostante condivisa). Poiché questi contenitori non utilizzano alcuno spazio di archiviazione al di fuori dei loro supporti di collegamento, la dimensione è zero byte.

Montaggi di debug (link e volumi)

Per vedere l'uso della montatura, sia per montaggi con collegamento diretto che per volumi gestiti, dovrai ottenere la dimensione del sistema operativo host. Se non sai dove sono, puoi correre docker container ls per ottenere l'ID di un contenitore e quindi eseguire docker inspect per prendere le informazioni di montaggio:

finestra mobile ispezionare a1c904020044 -f '{{json .Monti}}'

[{"Tipo":"legamento","Fonte":"/home/daemon-data/921ff235-5075-4d64-b977-8d02cc3dacc9","Destinazione":"/casa/contenitore","Modalità":"","RW":vero,"Propagazione":"privato"}]

Dopo, puoi controllare la dimensione totale con du -sh:

sudo du -sh /percorso/a/montare/

Contenitori e volumi di potatura

Docker non elimina mai contenitori o volumi (a meno che non si eseguano contenitori con --rm bandiera), poiché così facendo potresti perdere i tuoi dati. Nonostante questo, es factible que tenga una copia de seguridad de los datos antiguos que deben recolectarse como basura.

Del mismo modo que las imágenes, Docker proporciona una prune comando para contenedores y volúmenes:

docker container prune

docker volume prune

Depuración manual

Si tiene acceso directo al servidor que ejecuta Docker, puede abrir un shell en el contenedor:

sudo docker exec -it containerID /bin/bash

e corri du -sh fondamentalmente, che sarà tutte le informazioni, inclusa la dimensione dell'immagine, dati sui montaggi dei collegamenti e dati sui volumi.

sudo du -sh /
Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.