{{tag>sysadmin docker root directory racine}}
====== Modifier le root applicatif du service Docker ======
Par défaut Docker stocke l'ensemble des données dans le répertoire ''/var/lib/docker''. Comme il contient à la fois les images et les volumes nommés, sa taille peut rapidement augmenter.
===== Migration du root applicatif =====
Arrêter le service:
systemctl stop docker.service
Redéfinir la configuration par défaut via le fichier ''**/etc/docker/daemon.json**''
Afficher la version du daemon docker:
/usr/bin/dockerd --version
Pour les version antérieures à 17.05.0, utiliser la variable ''**graph**''
{
"graph": "/path/to/your/new/docker/root"
}
Pour les versions 17.05.0 et supérieure, même si ''**graph**'' est encore disponible la documentation recommande l'usage de la variable plus explicite ''**data-root**''
{
"data-root": "/path/to/new/docker/daemon-data-root"
}
Créer la nouvelle racine si besoin et copier l'ancien répertoire racine du service vers la nouvelle destination
sudo mkdir -p "/path/to/new/docker/daemon-data-root"
chmod 750 "/path/to/new/docker/daemon-data-root"
# via cp
sudo cp -rp /var/lib/docker/* "/path/to/new/docker/daemon-data-root"
# équivalent via rsync
sudo rsync -aP /var/lib/docker/ "/path/to/new/docker/daemon-data-root"
===== Test de la nouvelle configuration =====
Renommer l'ancienne racine du service pour s'assurer que le daemon ne l'utilise plus:
sudo mv /var/lib/docker /var/lib/docker.bak
Redémarrer le service et vérifier la présence des images, des volumes et des conteneurs:
sudo systemctl start docker.service
docker images
docker volume list
docker container list -a
Si tout est normal, on peut supprimer le dossier /var/lib/docker.bak et son contenu:
sudo rm -fr /var/lib/docker.bak
===== Références =====
* https://tienbm90.medium.com/how-to-change-docker-root-data-directory-89a39be1a70b