¿Algún consejo sobre cómo ahorrar espacio?

Ejecutamos un sitio de Discourse autoalojado en DigitalOcean y tenemos un disco de 25 GB. Acabo de intentar actualizar nuestra imagen de Discourse y recibí un mensaje de que necesitarás más espacio para continuar. Después de limpiar la imagen y los contenedores de Docker, todavía nos faltan 0.4 GB.

¿Algún consejo sobre cómo ahorrar espacio? Tanto para poder actualizar ahora como para ahorrar espacio en el futuro. Sé que necesitaremos redimensionar pronto, pero sería útil poder pasar al menos una actualización más de la imagen de Discourse.

4 Me gusta

¿Almacenas copias de seguridad localmente?
Si es así, tal vez deshacerse de un par de copias antiguas podría ayudar. 0,4 GB (es decir, 400 MB) debería ser manejable.

También podrías intentar liberar algo de espacio en el sistema anfitrión.

1 me gusta

intenta reiniciar tu servidor y luego vuelve a intentarlo si estás seguro de que hay suficiente espacio.

Usamos la funcionalidad de copia de seguridad de DigitalOcean. No he visto una opción para eliminar manualmente una de nuestras copias de seguridad.

¿Cómo podría hacer esto? Soy alguien que no tiene experiencia en programación, pero soy capaz de entender qué hacer y por qué lo estoy haciendo después de recibir algunas indicaciones.

Intenté reiniciar y no hubo cambios.

Después de ejecutar sudo du -h --max-depth 1, estos son mis resultados:

Intenta podar objetos de Docker no utilizados

1 me gusta

En este punto, me ahorraría problemas y haría el trabajo de redimensionar ahora.

3 Me gusta

Podé todo excepto los volúmenes no utilizados porque docker volume ls mostró que solo tenemos uno.

¿Lo intentaste?

./launcher cleanup

1 me gusta

¡Sí!

Sin embargo, investigué un poco más nuestras imágenes de Docker con docker images -a y veo esto.

¿Qué está pasando con <none>?

1 me gusta

Una búsqueda en Google me llevó a este comentario muy interesante.

rofranoJohn Rofrano

Nov '17

Es importante entender por qué tienes imágenes intermedias sin etiqueta que aparecen como <none> <none> para evitarlas, ya que, como has visto, no puedes eliminarlas si están en uso.

La razón por la que aparecen imágenes sin etiqueta es porque construiste una imagen, luego cambiaste el Dockerfile y volviste a construir esa imagen, y reutilizó algunas de las capas de la compilación anterior. Ahora tienes una imagen sin etiqueta que no se puede eliminar porque algunas de sus capas están siendo utilizadas por una nueva versión de esa imagen.

La solución es:

  • Eliminar la nueva versión de la imagen
  • Eliminar la imagen sin etiqueta y
  • Reconstruir la nueva versión de la imagen para que posea todas las capas.

Te quedará una sola imagen etiquetada que contiene todas las capas de las imágenes sin etiqueta anteriores y la nueva imagen.

~jr

No esperaba encontrar 2,64 GB en una imagen de Docker , así que ahora estoy tratando de averiguar qué está pasando allí. Si no necesito esta imagen en absoluto, entonces definitivamente estamos lejos de necesitar redimensionar.

¿Hiciste un

./launcher cleanup

? Pero te recomiendo que cambies el tamaño. Me sorprende que hayas aguantado tanto con 25 GB.

Además, ¿miraste en shared/backups/default?

Definitivamente no confiaría en las copias de seguridad de DigitalOcean como medio para respaldar tu foro.

2 Me gusta

¿Cuánto tiempo? No veo ninguna pista de eso; sí sé que estoy ejecutando felizmente un foro en 20G y otro en 25G.

En compartido, es posible que tengas muchos datos de respaldo (quizás en shared/standalone/backups/default). También podrías tener copias de bases de datos antiguas o archivos de registro antiguos. Te recomiendo ejecutar
du -kx / | sort -n | tail -49
o algo similar.

Es justo señalar que puedes ahorrar tiempo, a expensas de dinero, al mudarte a una instancia más grande. O puedes hacer el intercambio opuesto.

Esto me preocupa un poco. DO podría ayudarte con las copias de seguridad de todo tu sistema, pero si fuera yo, estaría más contento sabiendo cómo hacer copias de seguridad de Discourse y cómo obtener una copia local segura. Y cómo podar las copias de seguridad. (Si por alguna desgracia DO eliminara tu instancia y tu cuenta, querrías que tus datos sobrevivieran a eso).

:woman_facepalming:t3: Nosotros también usamos la funcionalidad de copia de seguridad de Discourse, y me di cuenta de que no habíamos limpiado las copias de seguridad antiguas allí.

Bueno, eliminé todas excepto la copia de seguridad más reciente usando la interfaz de Discourse y también descargué la copia de seguridad más reciente a mi disco local. Eso me deja a menos de 100 MB de tener suficiente espacio.

Aquí está lo que obtengo cuando ejecuto ese comando en var/discourse

656876  /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse
819624  /var/log/journal/e734ad1931dbee4740881cc15c9e7a9a
826292  /var/discourse/shared/standalone
826296  /var/discourse/shared
831476  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn/v6
831484  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn
831492  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache
832188  /var/discourse
845992  /lib/modules
850136  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse
850144  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home
991800  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www/discourse
966660  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www
966664  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var
991800  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff
991816  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765
994980  /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr/lib
1089092 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www/discourse
1089096 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www
1130168 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var
1177644 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff
1177660 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49
1224436 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse
1224440 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www
1224444 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var
1234612 /lib
1248080 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff
1248096 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d
1342320 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff/usr
1516440 /usr
1543656 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www/discourse
1543664 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www
1558580 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var
1659548 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff
1659564 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91
2040472 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr
2171304 /var/log/journal/d893af269dfb5f73239a5b6761d49ea0
2388612 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff
2388628 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6
2461904 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff
2461924 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058
3064672 /var/log/journal
3276268 /var/log
10107180        /var/lib/docker/overlay2
10131984        /var/lib/docker
10396840        /var/lib
14869684        /var
20007992        /

Recibí instrucciones adicionales sobre cómo manejar lo siguiente:

Los detalles son:

rofranoJohn Rofrano

1

20h

El comando para eliminar una imagen es:

docker rmi {nombre_de_la_imagen}

Donde {nombre_de_la_imagen} es el nombre de la imagen que desea eliminar. También puede usar el ID de la imagen para eliminarla (por ejemplo, docker rmi {id_de_la_imagen}). Esto es lo que necesitará usar para eliminar una imagen con el nombre de <none>.

Por ejemplo, digamos que tiene las siguientes imágenes:

REPOSITORIO           TAG        IMAGE ID       CREADO              TAMAÑO
my-new-image         latest     c18f86ab8daa   hace 12 segundos    393MB
<none>               <none>     b1ee72ab84ae   hace 1 minuto       393MB
my-image             latest     f5a5f24881c3   hace 2 minutos      393MB

Es posible que la imagen <none> no se pueda eliminar porque my-new-image está utilizando algunas capas de ella. Lo que necesita hacer es:

docker rmi my-new-image:latest
docker rmi b1ee72ab84ae
docker built -t my-new-image .

Lo que hace es eliminar my-new-image:latest, que está reutilizando capas de la imagen <none>. Luego elimina la imagen <none> usando su ID de imagen b1ee72ab84ae. Finalmente, reconstruye my-new-image creando todas las capas necesarias.

También asegúrese de que no tenga contenedores detenidos que todavía estén utilizando la imagen “sin etiqueta” <none>. Use docker ps -a para ver todas las imágenes, incluidas las que han salido. Si es así, use docker rm {id_del_contenedor} para eliminar el contenedor y luego intente eliminar la imagen <none> nuevamente.

¿Qué opinan todos?

Creo que puedes mejorar las cosas aquí:

Mira este intercambio anterior:

y

3 Me gusta

¡Esto funcionó y también cambié la política!

Todavía quiero rastrear el problema con la imagen <none> (ya que es ridículo que ocupe más de 2 GB), ¡pero resolviste mi problema más inmediato de crear suficiente espacio para actualizar! ¡¡Gracias!!

3 Me gusta

¡Absolutamente cierto! Por ahora me estoy divirtiendo mucho aprendiendo cosas nuevas, así que el tiempo vale la pena.