Si usas Fedora, seguramente de fábrica vengas utilizando
el motor de almacenamiento devicemapper, que supuestamente es de los más estables, pero que
en la práctica tiene serios problemas de rendimiento que no parece que vayan a
solucionarse de aquí a poco.
Si ya lo configuraste con docker-storage-setup
o similar, y ahora quieres cambiar a overlay2, sigue esta guía.
Esta guía está muy inspirada en el artículo Friends Don't Let Friends Run Docker on Loopback in Production, de muy recomendada lectura.
Es importante: vas a perder todos tus datos de Docker (imágenes, contenedores, volúmenes). Respalda todo antes.
Al meollo
Primero, detén Docker y borra todos los datos de almacenamiento que tenga:
# systemctl stop docker # rm -Rf /var/lib/docker
Edita /etc/sysconfig/docker-storage para decirle a Docker que quieres
usar el motor overlay2 si usas Linux >= 4.0 y Docker >= 1.12. Si
no, usa overlay, que no es compatible, pero el día de mañana solo
tendrás que volver a borrar todo, cambiar el driver y reiniciar el demonio Docker.
DOCKER_STORAGE_OPTIONS="--storage-driver overlay2 "
Edita /etc/sysconfig/docker para desactivar SELinux en Docker, ya que
hasta Linux 4.9 y una versión futura de Docker, no soportará los drivers
overlay:
OPTIONS='--selinux-enabled=false [otras opciones]'
Borra todo lo que te creó el antiguo docker-storage-setup (el thin pool
LVM y todo ese rollo). Los comandos difieren según lo tuvieras configurado, en mi
caso fueron:
# lvm lvremove fedora/docker-pool
Ahora crea un nuevo volúmen LVM:
# lvm lvcreate --name docker --extents 100%FREE fedora # mkfs.ext4 /dev/mapper/fedora-docker
Configura tu ordenador para montarlo en /var/lib/docker, añadiendo a
/etc/fstab esta línea:
/dev/mapper/fedora-docker /var/lib/docker auto nosuid,nodev,nofail 0 0
Móntalo y arranca Docker de nuevo:
# mount /dev/mapper/fedora-docker # systemctl start docker
Comprueba que todo funciona:
$ docker run --rm hello-world