web-dev-qa-db-fra.com

Sauvegarde et restauration du volume nommé du menu fixe

J'ai une question concernant les volumes et la propriété.

Par exemple, j'utilise cette image: privatebin , mais c'est la même chose dans tous les cas.

D'abord je crée un volume:

$ docker volume create privatebin-data

De docker inspecter, je peux voir où se trouvent les données:

$ docker inspect privatebin-data 
[
    {
        "CreatedAt": "2018-12-04T21:42:46+01:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/privatebin-data/_data",
        "Name": "privatebin-data",
        "Options": {},
        "Scope": "local"
    }
]

En suivant les instructions du docker hub, je commence l’image:

$ docker run -d --restart="always" --read-only -p 8080:80 -v privatebin-data:/srv/data privatebin/nginx-fpm-Alpine:1.1.1

Ensuite, je visite http: // localhost: 8080 et tout fonctionne comme prévu.

Contenu du volume maintenant:

$ ls -l /var/lib/docker/volumes/privatebin-data/_data
total 16
drwx------ 3 82 82 4096 Dec  4 21:49 73
-rw-r----- 1 82 82   46 Dec  4 21:49 purge_limiter.php
-rw-r----- 1 82 82  529 Dec  4 21:49 salt.php
-rw-r----- 1 82 82  131 Dec  4 21:49 traffic_limiter.php

Je veux sauvegarder le répertoire en l'archivant:

tar -C /var/lib/docker/volumes/privatebin-data -czf privatebin-data-backup.tar.gz _data

Ma question est la suivante: puis-je bien présumer que si je redémarre une image, par exemple sur un autre serveur, le propriétaire de l'utilisateur et du groupe sera toujours âgé de 82? Est-ce une bonne façon de sauvegarder et de restaurer des volumes de menu fixe?

4
Robert Maguda

Les UID/GID proviennent de l'intérieur de votre image, privatebin/nginx-fpm-Alpine. Donc, tant que vous créez des utilisateurs de la même manière/dans le même ordre et que rien ne change dans votre image de base, ces ID seront les mêmes quel que soit l'emplacement où vous exécutez l'image.

Ma méthode préférée de sauvegarde et de restauration de volumes consiste à utiliser un conteneur d'utilitaires, juste au cas où le dorsal serait modifié ou si vous décidiez de déplacer votre volume nommé vers un autre emplacement ou un magasin de données externe. Les commandes à faire qui ressemblent à:

docker run --rm \
  -v privatebin-data:/source:ro \
  busybox tar -czC /source . >privatebin-data-backup.tar.gz

et

docker run --rm -i \
  -v privatebin-data:/target \
  busybox tar -xzC /target <privatebin-data-backup.tar.gz
1
BMitch