informatique:aides:docker

Docker

  • Dockerfile :
    • ADD --chown=user:group my-backup.tar.gz /var/www : chown n'a aucun effet sur les fichiers et dossiers extrait d'un fichier compressé et c'est normal…
    • Dans un Dockerfile appelé depuis un fichier docker-compose.yml où des volumes nommées sont créés, la commande chown n'aura aucun effet car les volumes sont créés préalablement…
  • Pour la restauration, créer un fichier docker-compose-restore.yml semble être une solution intéressante. À lancer avec docker-compose -f docker-compose-restore.yml up
  • Exemple de méthode fonctionnelle pour sauvegarder & restaurer : https://loomchild.net/2017/03/26/backup-restore-docker-named-volumes/
    • Exemple de commande :
      docker run -it --rm -v bookmarksclapasorg_data-shaarli-storage:/var/www/shaarli/data -v ${PWD}/backup/:/backup alpine sh -c "rm -rf /var/www/shaarli/data/* /var/www/shaarli/data/..?* /var/www/shaarli/data/.[!.]* ; tar -C /var/www/shaarli/data/ -xjf /backup/2019-10-29_shaarli_data_backup.tar.bz2 ; chown -R 100: /var/www/shaarli/data/"
    • Utilisation d'une image Docker correspondant à l'article : https://github.com/loomchild/volume-backup
  • Solution CampToCamp → Bivac : https://hub.docker.com/r/camptocamp/bivac
  • Solution embarqué dans un container (cron, backup) : https://hub.docker.com/r/futurice/docker-volume-backup
  • Exemple avec une image contenant Shaarli :
    • Toutes les données sont stockées dans : /usr/share/nginx/shaarli/data
    • Récupérer le nom du container contenant les données avec la commande ps (ex.: shaarli_data_1) : docker ps
    • Utiliser ensuite la commande cp pour copier les données : docker cp shaarli_data_1:/usr/share/nginx/shaarli/data/ ~/backup_dir
  • Pour restaurer les données :
    • Récupérer le nom du container (ex.: shaarli_data_1) : docker ps
    • Utiliser ensuite la commande cp pour restaurer les données : docker cp ~/backup_dir shaarli_data_1:/usr/share/nginx/shaarli/data/
  • Pas de solution évidente. Il faut aussi créer les volumes avec Docker Compose sinon nous avons un message d'avertissement.
  • Arrêter les containers :
    docker compose down
  • Renommer le dossier et vérifier le contenu du fichier docker-compose.yml
  • Créer le nouveau volume new_volume associé à la stack Docker Compose avec :
    docker compose up -d; docker compose down
  • Copier les données de l'ancien old_volume vers le nouveau volume new_volume avec :
    docker run --rm -it -v old_volume:/from -v new_volume:/to alpine ash -c 'cd /from ; cp -av . /to'
    • Relancer le container et vérifier que tout fonctionne correctement :
      docker compose up -d
    • Si tout est ok, supprimer l'ancien volume :
      docker volume rm old_volume
  • Copier un fichier dans un volume nommé depuis l'hôte :
    • Se placer dans le dossier contenant les fichiers à copier sur l'hôte : cd <mon-dossier>
    • Copier le fichier : docker run --rm -v $PWD:/src -v my-volume:/dest -u user:group -w /src busybox cp /src/my-file.txt /dest/my-file.txt
    • Exemple : docker run --rm -v $PWD:/src -v amandine-cuircom_wordpress-storage:/dest -u www-data:www-data -w /src busybox cp /src/favicon.ico /dest/favicon.ico
  • informatique/aides/docker.txt
  • Dernière modification : 2024/12/31 10:31
  • de jpmilcent