Cómo reubicar de forma segura volúmenes de Docker en una partición más grande cuando se queda sin espacio

Cómo reubicar de forma segura volúmenes de Docker en una partición más grande cuando se queda sin espacio

Por defecto, Docker organiza sus datos en el directorio «/var/lib/docker» de la partición raíz. A medida que sus aplicaciones y contenedores se expanden, este directorio puede ocupar rápidamente un espacio considerable. Síntomas como un rendimiento reducido del servidor, la imposibilidad de guardar datos o fallos aleatorios suelen indicar que la partición raíz está llegando a su capacidad máxima. Esta guía explorará estrategias eficaces para reubicar sus volúmenes o datos de Docker a una partición alternativa, aliviando así la presión sobre la partición raíz.

La importancia de mover volúmenes de Docker

Los contenedores Docker generan con frecuencia cantidades sustanciales de datos persistentes, lo que puede agotar rápidamente la capacidad de almacenamiento de la partición raíz. Mover volúmenes Docker a otra partición ofrece varias ventajas:

  • Liberar espacio en el sistema de archivos raíz
  • Evite fallas del sistema causadas por falta de espacio en disco
  • Asigne datos de aplicaciones más grandes a soluciones de almacenamiento exclusivas
  • Mejorar la gestión general de los recursos de almacenamiento

Por ejemplo, los contenedores de bases de datos como MySQL o PostgreSQL pueden almacenar numerosos gigabytes de datos. Transferir estos volúmenes a una partición más espaciosa puede mejorar significativamente la estabilidad del sistema.

Cómo encontrar el directorio de volúmenes de Docker

Localizar el directorio de volúmenes Docker es un primer paso crucial antes de iniciar la migración. Use el siguiente comando para listar todos los volúmenes Docker disponibles:

docker volume ls

Inspeccionar volúmenes de Docker

Para recuperar información detallada sobre un volumen específico, ejecute el siguiente comando:

docker volume inspect volume_name

Dentro de la salida, ubique el Mountpointcampo que indica el directorio exacto donde Docker retiene los datos del volumen.

Inspeccionar un volumen específico de Docker

Cómo mover toda la raíz de datos de Docker

Para transferir todos los datos de Docker (incluidos volúmenes, imágenes y registros) a otra partición, puede mover todo el directorio de almacenamiento de Docker. Este enfoque integral garantiza que «/var/lib/docker» no se llene.

Comience por detener el servicio Docker para evitar modificaciones de archivos durante la migración:

sudo systemctl stop docker

A continuación, utilice el comando rsync para copiar los datos de Docker:

sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/

Este comando replicará el directorio Docker conservando los permisos y mostrando el progreso de la transferencia.

Copiar datos de Docker Rsync

Si necesita conservar atributos Docker adicionales, puede usar este comando mejorado:

sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/

Este comando es preferible debido a que conserva más metadatos del sistema de archivos y una indicación detallada del progreso.

Después de la transferencia, cambie el nombre del directorio de datos anterior como respaldo:

sudo mv /var/lib/docker /var/lib/docker.old

Actualice la configuración de Docker editando el archivo daemon usando:

sudo nano /etc/docker/daemon.json

Agregue la siguiente configuración:

{"data-root": "/path/to/new/partition/docker-data"}

Actualizar la configuración de Docker

Luego, reinicie Docker ejecutando:

sudo systemctl start docker

Confirme que el directorio de datos de Docker se haya actualizado correctamente con:

docker info | grep "Docker Root Dir"

Confirmar el nuevo directorio de datos de Docker

Si todo parece correcto, puedes proceder a eliminar la copia de seguridad anterior:

sudo rm -rf /var/lib/docker.old

Mover todos los datos de Docker a través de Docker Desktop (método GUI)

Si prefiere una interfaz gráfica, Docker Desktop le permite transferir todos los datos de Docker modificando la ubicación de la imagen de disco. Este método traslada eficazmente todos los datos almacenados por Docker (incluidas imágenes, contenedores y volúmenes) a una nueva ubicación.

Abra Docker Desktop, navegue a Configuración, diríjase a RecursosAvanzados y ubique la opción Ubicación de la imagen de disco.

Ubicación de la imagen del disco

Seleccione «Explorar» para designar un directorio en la partición preferida para el almacenamiento de Docker, como «/mnt/newdisk/docker-data».Haga clic en «Aplicar y reiniciar» para iniciar la reubicación de los datos.

Cambiar partición

Mover datos de volumen específico

Para mayor flexibilidad, puede mover un volumen Docker específico a una partición diferente mientras lo utiliza con su contenedor mediante un montaje de enlace de host. Este método es seguro, sencillo y simplifica los procesos de copia de seguridad. Comience por detener el contenedor que usa el volumen:

docker stop container_name

Posteriormente, utilice rsyncpara transferir los datos de volumen de forma segura:

sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/

Este comando transferirá todo el contenido del volumen anterior a “/data/docker/my_volume”.

Debes ajustar tu archivo “docker-compose.yml” para reflejar un montaje de enlace en lugar de un volumen administrado por Docker:

services: my_service: volumes: - /data/docker/my_volume:/container/path

Asegúrese de reemplazarlo /container/pathcon la ruta de montaje original dentro del contenedor. Vuelva a implementar el contenedor con el siguiente comando:

docker-compose up -d

Conclusión

Transferir volúmenes Docker o todo el directorio de datos de Docker a una partición más espaciosa puede liberar espacio significativamente en el sistema de archivos raíz, mejorando así la estabilidad del servidor. Este enfoque proactivo minimiza el riesgo de pérdida de datos y simplifica la gestión del almacenamiento en el futuro.

Si cambiar el directorio completo de Docker resulta inviable, existen otras opciones para recuperar espacio, como usar el docker system prunecomando para eliminar contenedores, imágenes, redes y cachés no utilizados, o emplear montajes de enlace de Linux para mover directorios sustanciales sin interrumpir el funcionamiento de Docker.

Fuente e imágenes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *