Skip to main content

Déplacer le répertoire par défaut de Docker

Déplacement du répertoire

Le répertoire par défaut de Docker est dans /var/lib/docker pour les volumes par exemple. Dans le cas d’une installation +/- par défaut, avec la séparation des partitions home, var et tmp, proposée par l’installeur Debian, nous pouvons rapidement nous retrouver à court d’espace disque.

Pour déplacer le répertoire, nous commençons par stopper les services Docker :

 # sudo systemctl stop docker

Puis nous vérifions que les services sont bien stoppés :

 # sudo systemctl status docker

Nous partons du principe que nous transférons le répertoire dans /home/docker. Pour créer le répertoire, nous utilisons “mkdir /home/docker”. Nous copions ensuite des données avec rsync :

 # rsync -avxP /var/lib/docker/ /home/docker

Le fichier de configuration de Docker doit ensuite être mis à jour pour refléter le changement. Pour cela, nous éditons le fichier /lib/systemd/system/docker.service :

 # vi /lib/systemd/system/docker.service

Et nous changeons la ligne

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

par

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

Nous relançons le systemd ensuite, avec la commande :

 # sudo systemctl daemon-reload

enfin, nous redémarrons Docker :

 # systemctl start docker

Attention : /lib/systemd/system/docker.service appartient au paquet docker-ce. Une prochaine mise à jour du paquet peut écraser ce fichier et faire disparaître silencieusement la modification (Docker repartirait alors sur /var/lib/docker sans avertissement). La méthode pérenne, recommandée par la documentation Docker, est de définir "data-root": "/home/docker" dans /etc/docker/daemon.json, ou à défaut de passer par un override systemd (systemctl edit docker.service) plutôt que d’éditer directement le fichier unité.