Changer le répertoire de données de Docker

8

Comment puis-je changer le répertoire de données de Docker où docker enregistre le conteneur (ou où lxc enregistre le conteneur)? J'ai sur mon serveur un ssd et un disque dur et je veux que le conteneur soit sauvegardé sur le disque dur. Merci

ssd_rider
la source

Réponses:

11

Je crois que dans ce guide, vous aurez une bonne explication.

Vous pouvez modifier le répertoire de base de stockage de Docker (où vont le conteneur et les images) en utilisant l'option -g lors du démarrage du démon Docker.

Ubuntu / Debian: modifiez votre /etc/default/dockerfichier avec l' -goption:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora / Centos: éditez /etc/sysconfig/dockeret ajoutez l' -goption dans la variable other_args: ex. other_args="-g /var/lib/testdir". S'il existe plusieurs options, assurez-vous de les placer entre "". Après un redémarrage, (redémarrage du docker de service) Docker doit utiliser le nouveau répertoire.

L'utilisation d'un lien symbolique est une autre méthode pour modifier le stockage d'images.

Attention - Ces étapes dépendent du fait que votre / var / lib / docker actuel est un répertoire réel (pas un lien symbolique vers un autre emplacement).

1) Arrêter le docker: service docker stop . Vérifier qu'aucun processus de docker n'exécute ps faux

2) Docker Double Check ne fonctionne vraiment pas. Jetez un œil au répertoire docker actuel: ls/var/lib/docker/

2b) Faire une sauvegarde - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Déplacez le /var/lib/dockerrépertoire vers votre nouvelle partition:mv /var/lib/docker /mnt/pd0/docker

4) Créez un lien symbolique: ln -s /mnt/pd0/docker /var/lib/docker

5) Jetez un œil à la structure du répertoire pour vous assurer qu'elle ressemble à ce qu'elle était avant le mv: ls /var/lib/docker/(notez la barre oblique

6) Démarrer la sauvegarde de Docker service docker start

7) redémarrez vos conteneurs résolvez le lien symbolique)

Conrado Fonseca
la source
quelle est la raison de 4)? Est-ce nécessaire? Dans mon cas, je voudrais que les fichiers Docker soient sur un RAID monté, et non sur la partition de démarrage.
Roman Mik
9

Dans les versions Docker plus récentes sur Ubuntu, vous éditerez /etc/default/daemon.json comme ceci:

{
    "data-root": "/new/location"
}
MattK
la source
2

Pour changer le datarépertoire, dockeril doit être exécuté avec l'option -g /my/data. Dans mon /etc/default/dockerje mets:

DOCKER_OPTS="-g /srv/docker"

Voir aussi mes notes ici .

Pour changer le datarépertoire dans lxcje mets /etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc

Stuart Cardall
la source
1

Mettez à niveau vers Docker 1.13.0.

Depuis les notes de version:

- New
The storage location of the Linux volume can now be moved
Snowcrash
la source
1

Pour développer la réponse de @ MattK:

La documentation Docker sur le contrôle du démon Docker suggère que la manière indépendante de la plateforme de le faire est:

éditez le fichier /etc/docker/daemon.json pour contenir la ligne

{
    "data-root": "/mnt/docker-data",
    (...)
}

/mnt/docker-dataest le répertoire dans lequel vous souhaitez que les images et les conteneurs de docker vivent.

alors

sudo systemctl restart docker

Vous pouvez vérifier si cela a fonctionné en exécutant

docker info

et recherchez le contenu de la ligne commençant par Docker Root Dir:.

Voir également https://stackoverflow.com/a/50217666/2209313 et https://unix.stackexchange.com/q/452368/36043 .

Logique errante
la source