Por defecto, Docker almacena la mayoría de sus datos dentro del directorio /var/lib/docker en los sistemas basados en GNU/Linux. Puede llegar un momento en el que tengas la necesidad de mover este directorio a otro lugar por algún motivo.

Por ejemplo, que tengas /var en una partición y te estés quedando sin espacio y necesites mover todo a otra ruta. En este tutorial, explicaremos como cambiar el directorio de Docker a otra ubicación.

📢
Asegurate de seguir estos pasos en su orden exacto, de lo contrario, puede que te encuentres errores durante el proceso. Estas instrucciones se han realizado en Ubuntu, pero deberían de funcionar para cualquier otra distribución de GNU/Linux siempre y cuando utilicen SystemD.

Parar el servicio de Docker

Lo primero que tenemos que hacer, es detener la ejecución de Docker. Para luego así poder hacer cambios en el servicio de SystemD.

📢
Ten en cuenta que este proceso parará todos los contenedores activos que tengas de Docker.
systemctl stop docker.service
systemctl stop docker.socket

Modificar el fichero de SystemD de Docker

A continuación tendremos que modificar el fichero /lib/systemd/system/docker.service para reconfigurar lo siguiente:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Por esto:

ExecStart=/usr/bin/dockerd -g /virtual/docker -H fd:// --containerd=/run/containerd/containerd.sock

Si nos fijamos, hemos añadido el parámetro -g para configurar el nuevo directorio de Docker. En este caso hemos seleccionado /virtual/docker.

Si fuera necesario, crearemos el directorio que hemos configurado por si no existiera en nuestro sistema de ficheros.

mkdir -p /virtual/docker

Sincronizamos datos

Ahora que tenemos el nuevo directorio preparado, vamos a copiar los ficheros de /var/lib/docker al nuevo directorio.

rsync -aqxP /var/lib/docker/ /virtual/docker

Iniciamos Docker con la nueva configuración

Finalmente, iniciaremos de nuevo Docker con la nueva configuración, esta vez, con nuestro directorio recién reconfigurado:

systemctl daemon-reload
systemctl start docker

Tras iniciarlo, podremos comprobar con este comando que se está ejecutando con el nuevo directorio:

# ps aux | grep -i docker | grep -v grep
root       14169  0.0  0.4 2267048 74472 ?       Ssl  16:57   0:00 /usr/bin/dockerd -g /virtual/docker -H fd:// --containerd=/run/containerd/containerd.sock

Ya tenemos Docker arrancado en el nuevo directorio y funcionando correctamente. Recuerda, que tras comprobar que todo funciona correctamente, puedes proceder a eliminar el directorio antiguo:

rm -rf /var/lib/docker
🚨
Ten en cuenta, que si actualizas el paquete de Docker desde repositorios, seguramente dejen de funcionar los contenedores, por lo que deberás de parar los contenedores, actualizar el paquete de Docker y luego aplicar de nuevo este tutorial.
Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación