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.
¿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.
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.
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.
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.
¿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).
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
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:
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.
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!!