[résolu] Comment modifier l'emplacement de Docker

No space left on device Oups, un code d'erreur encore jamais rencontré apparait dans vos logs.
Votre application Dockerisée ne fonctionne plus correctement, votre serveur indique un problème d'espace disque malgré que vous ayez opté pour une solution d'hébergement plus que suffisante, pas de panique, la solution est simple et ne prend que quelques minutes à régler.

Confirmer le problème d'espace disque (optionnel)

Affichons l'espace disque disponible sur le serveur
df -h

Filesystem      Size  Used Avail  Use% Mounted on
udev             16G     0   16G    0% /dev
tmpfs           3.2G  331M  2.9G   11% /run
/dev/md3         20G   20G    0M  100% /
tmpfs            16G     0   16G    0% /dev/shm
tmpfs           5.0M     0  5.0M    0% /run/lock
tmpfs            16G     0   16G    0% /sys/fs/cgroup
/dev/md2        487M   53M  406M   12% /boot
/dev/md4        1.8T  8.1G  1.7T    1% /home

Le disque /dev/md3 monté à la racine du serveur / est plein, tandis que le disque monté en /home lui est quasiment vide.

Nous pouvons maintenant vérifier :

  1. que Docker est bien installé sur le disque plein
  2. que Docker est responsable de ce manque de place

docker info

Docker Root Dir: /var/lib/docker  

Ce qui confirme que Docker est bien installé sur le disque plein.
Nous vérifions la taille du répertoire Docker

du -sh /var/lib/docker

15G     /var/lib/docker/

Docker occupe effectivement les 3/4 de notre disque.

Déplacer le répertoire data de Docker

  1. Stopper Docker
    sudo service docker stop

  2. Copier le répertoire data de Docker vers un nouveau répertoire sur le disque libre
    sudo rsync -aP /var/lib/docker/ /home/nouveau/repertoire/docker

  3. Faire un backup de l'ancien répertoire
    sudo mv /var/lib/docker /var/lib/docker.bak

  4. Ajouter un fichier de configuration pour indiquer à Docker le nouvel emplacement du répertoire data

{
   "data-root": "/home/nouveau/repertoire/docker"
}
  1. Redémarrer Docker
    sudo service docker start

  2. Tester que la modification du répertoire docker data a bien été prise en compte
    docker info

 Docker Root Dir: /home/nouveau/repertoire/docker

Docker indique bien utiliser le nouveau répertoire data.
Puis testez que votre application fonctionne correctement.

  1. Supprimer le fichier Docker data de sauvegarde
# Une fois que vous avez testé que votre application fonctionnait correctement,
# vous pouvez supprimer le repertoire Docker data
sudo rm -rf /var/lib/docker.bak

Félicitations, vous venez de :

  1. Déplacer le répertoire docker Data du disque / au disque /home
  2. Libérer 15G d'espace disque sur /
  3. Vous débarasser durablement du problème d'espace disque causé par Docker.