EN DIRECT en ligne connexion / inscription
Connexion

Surnom/Pseudo
Mot de Passe :

[ Vous avez perdu votre mot de pass ? | Devenir membre ]

×

Migration du chemin de containers

CowcotLand topic RSS feed Surveiller les réponses de ce sujet
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 15 novembre 2023 à 21:40  Lien permanent
Répondre en citant
Salut les fermiers,

J'ai une petite question sur la migration de containers et de leurs volumes d'un disque (un raid) à un autre.
Je pensais m'en sortir en corrigeant simplement les dossier et en faisant une copie des fichiers d'un disque à l'autre (avec le service docker stoppé) mais visiblement non.

Vous procédez comment vous ?
J'ai plusieurs container ou stack qui sont fichus différemment et j'ai l'impression que la plupart cassent.

Les dossiers Docker sont sur Disk1 et je veux le mettre sur Disk2 à savoir l’arborescence du dossier root ainsi que les volumes qui vont avec.
J'ai commencé par une modification du 'root path', ça semble fonctionner docker démarre et portainer se lance en étant sur Disk2. Les container dedans démarrent et ne renvoient majoritairement pas d'erreurs mais ils ne semblent pas en état de marche et ce que je laisse le chemin pointant vers disk1 ou que je le modifie pour Disk2. Et de même qu'ils soit via "Bind" ou via "volume".

En penchant sur le container Plex qui me renvoie un soucis de database je me suis dit que ça venait, au moins pour lui, des fichiers de db des volume '/config'.
Et en effet sans changer le root path et juste en modifiant le volume '/config' d'un container fonctionnel pour son équivalant copié ça pose problème.
En essayant par curiosité sur un reste d'une vieille instal Plex démarre sans erreur et reconstruit la database d’antan.

Donc je sèche un peu là, la copie ne fonctionnerait pas ?
J'ai fait un 'rsync -azv' assez classique.


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
garzebuth @
Fermier
Fermier

6291pts

Inscrit le: 30 novembre 2011
Messages: 3667

Navigateur : n.c.

Hors ligne
Message Posté le: 15 novembre 2023 à 22:15  Lien permanent
Répondre en citant
D'après ce truc https://stackoverflow.com/questions/63873956/change-mountpoint-of-docker-volume-to-a-custom-directory c'est bien ça il suffit de copier les fichiers et pointer vers le nouveau root.

Ton dossier /config c'est un host path ? Tu l'as bougé aussi ? Tu as mis à jour le volume dans ton container ?
Voir le profil de l'utilisateur Envoyer un message privé
Taloken @
Céréalier
Céréalier

8229pts

Inscrit le: 22 octobre 2012
Age: 29
Messages: 5091
Localisation: Niort
Navigateur : Firefox

Hors ligne
Message Posté le: 15 novembre 2023 à 22:49  Lien permanent
Répondre en citant
Tu peux joindre les Dockerfile/compose utilisés pour la stack stp ?


Représentant commercial amateur et bénévole DesignedByGG
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 15 novembre 2023 à 23:58  Lien permanent
Répondre en citant
Dans un premier temps je m'occupe de ceux que j'ai créé via l'interface Portainer au tout début avant de découvrir les fichiers compose.
Donc j'édite le volume dans l'interface qui correspond sur le host au stockage des /_data et dans le container au /config.
J'en ai d'autres créés avec un fichier compose et je testerais demain en éditant les volumes correctement avant de le déployer.

J'ai le choix entre des volumes dédiés ou un bind à la localisation voulue.
De base mon conteneur plex était sur un volume créé pour recevoir les /config de différents containers (peut être pas le meilleur choix).
En éditant le root path ça change correctement la localisation de ce volume en pointant sur le disk2.
Néanmoins les deux conteneurs utilisant ce volume ne fonctionnement pas une fois le root path changé et la nouvelle localisation pointée.
Pour essayer de trouver la source de l'erreur j'ai remis le root path et indiqué à la main la localisation du nouveau volume (et aussi essayer avec un bind à la bonne localisation) mais ça ne marche pas plus.

EDIT: Dans un premier temps j'avais fonctionné comme ton lien en fait gazerbuth.


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
fission @
Meuhdérateur
Meuhdérateur

3437pts

Inscrit le: 08 mars 2019
Messages: 2884
Localisation: ile de france
Navigateur : n.c.

Hors ligne
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 16 novembre 2023 à 11:37  Lien permanent
Répondre en citant
C'est la procédure que j'ai réalisée, ça me paraissait assez simple.
L'étape que j'ai en plus c'est de bouger les volumes persistants en plus du dossier de config.

Je viens de remarquer en voulant migrer les stacks avec compose que mon nextcloud me renvoie des erreurs. Il n'a pas aimé l'aller retour entre les rooth path visiblement.

Citation:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] Connection refused in /config/www/nextcloud/lib/private/DB/Connection.php:139


Le container de la DB est Ok mais visiblement c'est SWAG qui doit bloquer il n'a pas pu renouveler le certificat. :/
Ce qui est étrange car de mémoire il était valide (pas de mail) et j'y ai accédé il y a quelques jours j'en suis sûr.
Duck DNS ne me renvoie pas d'erreur lui.


Mon stack nextcloud moins mes infos perso :
Citation:

version: "2"

services:
nextcloud:
image: ghcr.io/linuxserver/nextcloud
container_name: nextcloud
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Paris
volumes:
- /config
- /srv/dev-disk-by-uuid-53503ffe-001d-4395-8d8e-a3670303c2ed/system/docker/volumes/portainer_data/_data/nextcloud/config:/config #A changer pour Disk2
- /srv/dev-disk-by-uuid-53503ffe-001d-4395-8d8e-a3670303c2ed/Media:/data #Pareil
depends_on:
- mariadb
restart: unless-stopped
mariadb:
image: ghcr.io/linuxserver/mariadb
container_name: nextclouddb
environment:
- PUID=1000
- PGID=100
- MYSQL_ROOT_PASSWORD=... #pass
- TZ=Europe/Paris
volumes:
- /srv/dev-disk-by-uuid-53503ffe-001d-4395-8d8e-a3670303c2ed/system/docker/volumes/portainer_data/_data/nextclouddb:/config #Disk2
restart: unless-stopped
swag:
image: linuxserver/swag
container_name: swag
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Paris
- URL=.duckdns.org #Domaine
- SUBDOMAINS=www,
- VALIDATION=http
- EMAIL=. # Email
volumes:
- /srv/dev-disk-by-uuid-53503ffe-001d-4395-8d8e-a3670303c2ed/system/docker/volumes/portainer_data/_data/swag:/config #Disk2
ports:
- 10443:443
- 1080:80
restart: unless-stopped


EDIT: Suite à la remarque de fission, maj de la ligne nextcloud que j'ai simplifiée.


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi


Dernière édition par mini-pouce le 16 novembre 2023 à 16:03; édité 1 fois
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
fission @
Meuhdérateur
Meuhdérateur

3437pts

Inscrit le: 08 mars 2019
Messages: 2884
Localisation: ile de france
Navigateur : n.c.

Hors ligne
Message Posté le: 16 novembre 2023 à 15:01  Lien permanent
Répondre en citant
ton serveur sql est bien démarré ?

sinon tu es sur de ce chemin : - /srv/dev-disk-by-uuid-53503ffe-001d-4395-8d8e-a3670303c2ed/Media/:/data #Pareil ? ( je suis surpris de trouver /:/ dedans )


Voir le profil de l'utilisateur Envoyer un message privé
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 16 novembre 2023 à 15:16  Lien permanent
Répondre en citant
Le sql est compris dans le container qui fonctionne bien en temps normal.
Le chemin est un lien entre le chemin physique et le chemin dans le container.
Ça mène à un dossier dans média sur ma machine, tu as bien vu, je l'ai supprimé avec mes infos par réflexe mais ce n'était pas nécessaire. Ça fait média/mondossier:/dossier/container comme le veut la structure du fichier yalm.


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
Taloken @
Céréalier
Céréalier

8229pts

Inscrit le: 22 octobre 2012
Age: 29
Messages: 5091
Localisation: Niort
Navigateur : Firefox

Hors ligne
Message Posté le: 16 novembre 2023 à 18:18  Lien permanent
Répondre en citant
Ce path me donne l'impression qu'il ne devrait pas être présent dans un compose :
/srv/dev-disk-by-uuid-53503ffe-001d-4395-8d8e-a3670303c2ed/system/docker/volumes/portainer_data/_data/nextclouddb

J'ai comme l'impression que tu as demandé à portainer de créer un volume, puis ensuite de le monter dans le compose sur un chemin dans le container.


Un volume, soit tu le définis en
- /var/chemin/sur/le/host:/var/chemin/dans/le/container
sans aucune autre action

Soit tu demande à docker/portainer de créer un volume nommé (persistent, mais pas sensé être synchronisé avec un répertoire existant), et tu le monte en mettant dans le compose uniquement
- nom_du_volume:/var/chemin/dans/le/container



Edit : Tes chemins sur le disk 2, ce sont des volumes aussi créés par portainer ou c'est toi qui les a fait à la main ?


Représentant commercial amateur et bénévole DesignedByGG
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 16 novembre 2023 à 20:14  Lien permanent
Répondre en citant
Effectivement j'ai peut être fait une bêtise à l'époque en sortant de l'usage conseillé ?
Ma volonté était de réunir les données persistantes des containers dans un même dossier.
J'ai créé l'arborescence de portainer_data pour sur, le _/.data après là je ne sais pas peut être que j'ai voulu me caler sur l'arborescence type des contrainers.
N'hésites pas à me dire qu'elle est le recommandation et l'usage pour les prochaines fois, je dois me former plus proprement à docker que j'utilise pour le moment de façon un peu barbare.
Si je comprends bien dans ton compose tu donnes juste un nom mais pas le chemin et du coup il gère automatiquement sa création en partant du root path j'imagine ?

Ma compréhension ici c'est que je liais le dossier du container à mon dossier sur ma machine physique (un bind) donc j'ai mis l'arborescence. Je n'ai pas eu l'idée de créer un volume car j'ai appris leur existence plus tard. D'ailleurs tu conseilles quoi toi ?
Pour plex j'ai utilisé un volume et l'interface portainer, la seule raison étant que ça reste un terrain d'apprentissage et donc que je voulais tester ces fonctions. ^^

Pour autant ça fait plus d'un an que ça tourne sans aucun problème.
Quand au Disk2 il s'agit d'une copie de Disk1 qui est en fait un RAID5.
Au cas où j'ai ré-essayé la copie arec un "cp -av" mais ça n'a rien changé donc ça ne doit pas être un soucis de copie ou de permission.


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
Taloken @
Céréalier
Céréalier

8229pts

Inscrit le: 22 octobre 2012
Age: 29
Messages: 5091
Localisation: Niort
Navigateur : Firefox

Hors ligne
Message Posté le: 16 novembre 2023 à 21:02  Lien permanent
Répondre en citant
Yes, tu peux créer un volume sans préciser de path, et Docker s'en servira pour garder les infos entre plusieurs redémarrages de container, mais aussi pour partager les données entre les containers en précisant le même volume.

En précisant un path, tu maitrises là où seront les données, et ça peut être en dehors de l'arbo gérée par Docker.


Edit : Ah mais portainer_data c'est déja un chemin monté pour les données de portainer, donc tu montes dans des containers un chemin qui se retrouve lui même dans le système fichier d'un autre container.
Le but de docker c'est compartimenté chaque applicatif.
Portainer n'a absolument aucun intérêt à accéder aux data de tes autres containers, et vice-versa, donc les chemins doivent être isolés, et si tu veux partager des datas, entre deux containers, tu leur précise un chemin unique dédié à ce partage


Représentant commercial amateur et bénévole DesignedByGG
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 16 novembre 2023 à 22:21  Lien permanent
Répondre en citant
Pour la première partie, c'est bien ce que je comprenais.
Pour ton Édit, effectivement c'est un truc bizarre que j'avais fait par praticité en découvrant l'outil.
Avec le recul et ton commentaire, c'est vrai que ce n'est pas la bonne façon de procéder et je te remercie de me le faire remarquer, j'avais un peu oublié tout ça depuis.
Neanmoins je ne pense pas que ça soit le problème ici non ? Même si c'est bête, les containers ont leur dossiers et ne semblent pas interférer depuis le temps.


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 22 novembre 2023 à 13:57  Lien permanent
Répondre en citant
Petite maj je pense avoir résolu mon problème grâce aux commandes pour copier les container, et je vais en profiter pour restructurer mes dossiers.
Bien sûr je laisserais la solution en détail lorsque j'aurais confirmé la réussite sur plusieurs conteneurs. Clin d'oeil

@Taloken ou d'autres, basé sur votre expérience vous préférer dédier des volumes ou faire des bind mount ?
Et est-ce que vous suivez une structures particulières pour les dossiers ?

Je pensais créer un dossier /AppData à la racine de mon disque et monter les volumes dedans.
En créant au préalable un dossier par container pour mieux classer les choses, sinon on revient à moitié dans mon cas de figure (les fichiers docker/portainer en moins).


EDIT: Je suis coupé dans mon avancée portainer ne veut plus déployer les container (Err 500). ><
EDIT2: Nan c'est moi qui fatigue je n'avais pas stoppé l'ancien donc conflit de port évidant...
Ça semble bien marcher !


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
mini-pouce @
Eleveur bovin
Eleveur bovin

28552pts

Inscrit le: 15 mai 2011
Messages: 10387

Navigateur : Firefox

Hors ligne
Message Posté le: 23 novembre 2023 à 10:44  Lien permanent
Répondre en citant
Désolé du triple poste, mais ça garde de la lisibilité voici la méthodologie pour faire le backup des volumes de nos containers.

Il s'agit d'utiliser un container minimal et temporaire en y attachant le volume du container à backup, les fichiers sont copiés et écrit sur notre disque.
Dans le cas de mon container plex :
nom du container : Plex
nom de l'archive : backup/plex_m_backup.tar
Code:
docker run --rm --volumes-from Plex -v $(pwd):/backup ubuntu tar cvf backup/plex_m_backup.tar /config/Library/Application\ Support/Plex\ Media\ Server/

A noter que le chemin du backup devrait simplement être "/config" mais dans mon cas, sans doute à cause de ma mauvaise installation, je siphonnais tous les dossiers dockers, j'ai donc préciser d'avantage le chemin pour être sûr de ne récupérer que les fichiers plex (en ratissant assez large).

Ensuite je recréer le container en changeant la racine vers un nouveau bind mount qui va pointer sur du vide, Plex va donc redémarrer la configuration à zéro.
De là on procède de la même façon en copiant dans le container nos précédents fichiers.
Code:
docker run --rm --volumes-from Plex -v $(pwd):/backup ubuntu  bash -c "cd /config && tar xvf /backup/plex_m_backup.tar --strip 1"


Donc ça marche plutôt bien et ce n'est pas très compliqué, la commande est simple et documentée au besoin.
Pour automatiser le backup on doit pouvoir faire (pas testé à voir si les variables passent) :
Code:
for name in $(docker ps --format '{{.Names}}'); do docker run --rm --volumes-from $name $(pwd):/backup ubuntu  bash -c "cd /config && tar xvf /backup/$name_backup.tar --strip 1"


Une question demeure entière, pourquoi la copie des fichiers sur l'hôte n'a pas suffit ?
Et pourquoi le changement de racine (puis retour en arrière) a mis en pls la stack nextcloud+db ?
Me reste à reprendre de zéro la partie nextcloud qui n'a pas survécu, à moins que vous aillez des pistes ?

EDIT: J'ajoute les étapes de suppression d'un raid sous OMV tant que j'y suis si jamais quelqu'un préfère être certain de la procédure :
- supprimer les mentions de vos disques dans vos VM et dockers (ça peut vraiment le péter),
- supprimer les dossiers partagés et les autres partages réseau,
- supprimer les scripts/jobs et autres tâches prévues sur le disques,
- supprimer le système de fichier,
- supprimer le RAID,
Bonus: formatez vos disques.

Au passage j'avais quelques erreurs car je m'étais emballé en supprimant le RAID avant le Système de fichier avec une erreur de type :
Citation:
Failed to execute command 'export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin; export LANG=C.UTF-8; omv-rmraid '/dev/md127' 2>&1' with exit code '1': mdadm: Cannot get exclusive access to /dev/md127:Perhaps a running process, mounted filesystem or active volume group?

Pour régler cela pas de panique : faites un reboot, le RAID réapparait normalement (en intégrité et non dégradé), vous supprimer le FS puis vous supprimer le RAID, et c'est bon tout roule. Clin d'oeil


Si j'avance, suivez-moiSi je meurs, vengez-moiSi je recule, tuez-moi
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
Sauter vers: 
Surveiller les réponses de ce sujet CowcotLand topic RSS feed  

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sujets similaires

Sujet Auteur Forum Réponses Posté le
Pas de nouveau message Migration W 7 vers W10 lors de l'instal d'un nouveau SSD Magnushorn OsLand 2 02 avril 2023 à 11:55
Pas de nouveau message Migration de ET vers un NAS Synology Knapneder Périphériques 9 11 février 2023 à 12:44
Pas de nouveau message [Debian-10] Migration de matériel, sans réinstallation Comias Linux 2 26 mai 2022 à 02:42
Pas de nouveau message Migration d'un SSD vers un SSD M2 SuperSeducer L'atelier 15 21 février 2021 à 15:29
Pas de nouveau message Clonage Data Migration mitch54 SSD 1 04 février 2021 à 16:43