Sinds een tijdje ben ik aan het stoeien met docker, portainer en watchtower op een raspberry PI. Hierbij loop ik tegen het probleem aan dat na het updaten van een container naar een nieuwe versie (in mijn geval scrypted), deze wordt geïnstalleerd als een nieuwe kale installatie. De instellingen etc in mijn container gaan hierbij dus elke keer verloren. Wat moet ik doen om te zorgen dat ik wel automatisch kan bijwerken naar de nieuwste versie, maar ik dus niet elke keer alles opnieuw moet configureren?
Vraag
Beste antwoord (via IKKE86 op 07-11-2022 11:45)
Precies, je moet die /server/volume mappen naar een folder buiten de container om instellingen enz. persistent te maken.
Alle reacties
Door een lokaal stukje storage te configureren voor gebruik door de container. Ergens in de documentatie zal ongetwijfeld staan aan welk pad in de container dat gekoppeld moet worden.
Het hele idee van een Docker container is juist dat deze stateless is.
Dingen als je config kun je in een Docker volume of een bind mount naar de host opslaan
https://docs.docker.com/storage/volumes/
https://docs.docker.com/storage/bind-mounts/
Bind mounts hebben het nadeel dat ze niet volledig geïsoleerd zijn, maar dan weer het voordeel dat het gewoon een verwijzing naar een mapje op de host is, en je er dus altijd bij kan. Volumes hebben het tegenovergestelde; je kan deze niet benaderen als mapje zonder ze eerst expliciet te mounten.
Je zou je image moeten kunnen vervangen en dan de container opnieuw moeten kunnen starten zonder dataverlies, maar bij het opnieuw opstarten van een container is de data in de container weg, want de hele container wordt gewoon verwijderd en opnieuw aangemaakt. Je moet dus zorgen dat alle data die je wil bewaren buiten de container wordt opgeslagen.
Dingen als je config kun je in een Docker volume of een bind mount naar de host opslaan
https://docs.docker.com/storage/volumes/
https://docs.docker.com/storage/bind-mounts/
Bind mounts hebben het nadeel dat ze niet volledig geïsoleerd zijn, maar dan weer het voordeel dat het gewoon een verwijzing naar een mapje op de host is, en je er dus altijd bij kan. Volumes hebben het tegenovergestelde; je kan deze niet benaderen als mapje zonder ze eerst expliciet te mounten.
Je zou je image moeten kunnen vervangen en dan de container opnieuw moeten kunnen starten zonder dataverlies, maar bij het opnieuw opstarten van een container is de data in de container weg, want de hele container wordt gewoon verwijderd en opnieuw aangemaakt. Je moet dus zorgen dat alle data die je wil bewaren buiten de container wordt opgeslagen.
Gebruik volumes, in het kort deze zitten niet in de container, maar erbuiten en zijn daarmee persistent. Wat er nu zonder volumes gebeurt is dat je variabele data in de container houdt en dus elke keer weg gooit met het pullen en starten van een nieuw image.
Dat is hier niet zichtbaar, hier zie je alleen maar de "variabelen" die in je container gebruikt worden.IKKE86 schreef op vrijdag 4 november 2022 @ 12:43:
[Afbeelding]
Mijn kennis is beperkt, maar de storage staat toch op een apart volume met deze instellingen?
Iets lager staat het volumes deel.... daar moet iets staan
Precies, je moet die /server/volume mappen naar een folder buiten de container om instellingen enz. persistent te maken.
Pagina: 1