Een back-up maken van uw Docker-volumes

0
144

Docker-volumes worden gebruikt om persistente gegevens apart van uw containers op te slaan. Gegevens die in een volume worden bewaard, blijven toegankelijk nadat uw containers zijn gestopt, zodat u stateful workloads kunt containeriseren.

Hoewel volumes de containers overleven, is dit niet voldoende bescherming voor productietoepassingen. U moet een back-up van uw volumes maken, zodat u ze na een ramp kunt herstellen. Door regelmatig volumeback-ups te maken, kunt u uw omgeving herstellen als uw Docker-host wordt gecompromitteerd of als gegevens per ongeluk worden verwijderd.

Volumeback-ups beheren

Docker heeft geen ingebouwd mechanisme voor het maken van back-ups van volumes of het exporteren van hun inhoud. U moet uw eigen oplossing opzetten om toegang te krijgen tot het volume en de gegevens naar uw back-upbestemming te kopiëren.

Het maken van een tijdelijke container die het volume koppelt waarvan u een back-up wilt maken, is meestal de gemakkelijkste manier om verder te gaan. Voeg de –volumes-from-vlag toe aan een docker run-opdracht om automatisch de volumes van een bestaande container in uw back-upcontainer te koppelen. U kunt dan tools zoals tar en gzip gebruiken om een ​​archief van de inhoud van het volume in uw werkmap te deponeren.

Hier is een compleet voorbeeld van deze techniek:

# Maak een container die gegevens opslaat in het “mysql_data” volume docker run -d –name mysql -v mysql_data:/var/lib/mysql – e MYSQL_ROOT_PASSWORD=mysql mysql:8 # Start een tijdelijke container om een ​​back-up te maken van het “mysql_data” volume docker run –rm –volumes-from mysql -v $PWD:/backup-dir ubuntu tar cvf /backup-dir /mysql-backup.tar /var/lib/mysql

De vlag –volumes-from betekent dat de tijdelijke back-upcontainer toegang krijgt tot de volumes van de mysql-container. De map /var/lib/mysql in de back-upcontainer geeft de inhoud van het volume weer, omdat dit het pad is dat door de mysql-container wordt gebruikt. Door het pad te tarreren, wordt een archief van uw volume geproduceerd dat u als back-up kunt gebruiken. Het wordt in uw werkmap gedeponeerd vanwege de bind-mount die is ingesteld door de vlag -v.

De vlag –rm verwijdert de back-upcontainer zodra de opdracht is voltooid. Hierdoor blijft het archief in uw werkmap, klaar om te worden verplaatst naar langdurige opslag. U kunt het maken van back-ups automatiseren door de opdracht docker run als cron-taak toe te voegen.

Uw back-up herstellen

U kunt een vergelijkbare techniek gebruiken om te herstellen uw back-up. Wanneer u de inhoud van een bestaand volume vervangt, maakt u een andere tijdelijke container met het volume en een bind-koppeling naar uw back-uparchief. Pak de inhoud van het archief uit in het aankoppelpad van het volume.

$ docker run –rm –volumes-from mysql -v $PWD:/backup-dir bash -c “cd /var/lib/mysql &&tar xvf /backup-dir/mysql-backup.tar”

Dit kan riskant zijn als containers het volume actief gebruiken. Het overschrijven van bestanden die in gebruik zijn, kan fouten en onverwacht gedrag veroorzaken. U kunt de opdracht docker stop gebruiken om uw containers tijdelijk te stoppen voordat u ze weer omhoog brengt met docker start.

$ docker stop mysql # Restore the backup # … $ docker start mysql

Maak het volume voordat u uw container start als u een back-up terugzet naar een nieuwe host:

$ docker volume create new_volume

Vervolgens koppelt u dit volume aan uw tijdelijke container:

docker run – -rm -v new_volume:/var/lib/mysql -v $PWD:/backup-dir ubuntu tar cvf /backup-dir/mysql-backup.tar /var/lib/mysql

Uw toepassingscontainer starten met hetzelfde volume geeft toegang tot de bestanden die u hebt hersteld:

docker run -d –name mysql -v new_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql mysql:8

Door deze procedures te testen, kunt u controleren of uw back-ups bruikbaar zijn als u ooit te maken krijgt met een ramp.

Direct back-ups maken van volumes

De beschreven procedure hierboven is de aanbevolen manier om een ​​back-up te maken van Docker-volumes. Sommige situaties kunnen echter beter worden gediend door inhoud rechtstreeks te kopiëren van waar volumes zijn opgeslagen op het bestandssysteem van uw host.

Meestal vindt u de inhoud van uw volumes in /var/lib/docker/volumes. Elk volume krijgt zijn eigen submap, zoals /var/lib/docker/volumes/mysql. Binnen dit pad op het hoogste niveau vindt u een _data-map die alle bestanden bevat die op het volume zijn opgeslagen.

Het archiveren van de map /var/lib/docker/volumes kan een handige manier zijn om snel maak een back-up van alles op uw host. Je moet wel sudo gebruiken omdat alles onder dit pad eigendom is van root.

Het op deze manier back-uppen van volumes wordt niet aanbevolen voor regelmatig gebruik, omdat het niet overdraagbaar is tussen installaties. Het volume-stuurprogrammasysteem van Docker betekent dat volumegegevens niet noodzakelijkerwijs worden opgeslagen op het bestandssysteem van uw host. het kan op een netwerkshare of een andere externe locatie zijn. Deze techniek moet alleen worden geprobeerd als u een snelle back-up wilt voordat u onderhoud uitvoert op een specifieke machine.

Samenvatting

Docker-volumes moeten met zorg worden behandeld omdat ze de persistente gegevens van uw toepassing bevatten. Het maken van regelmatige back-ups beschermt u tegen gegevensverlies voor het geval uw host wordt gecompromitteerd of een foutief containerproces per ongeluk bestanden verwijdert.

Hoewel u back-ups kunt maken door de installatiemap van Docker te archiveren, zou dit moeten zoveel mogelijk worden vermeden. Tijdelijke back-upcontainers lijken misschien omslachtig, maar ze kunnen eenvoudig worden gescript en bieden voorspelbare resultaten voor alle volumestuurprogramma's.

Als u eenmaal een volumeback-uparchief hebt gemaakt, vergeet dan niet om dit zo snel mogelijk naar externe opslag te uploaden . Een back-up die is opgeslagen op de computer waarvan deze afkomstig is, helpt niet als u de toegang verliest of als er een hardwarefout optreedt.

LEES VOLGENDE

  • › Moet je Early Access-games op Steam kopen?
  • › Zijn gedecentraliseerde VPN's veiliger dan reguliere VPN's?
  • › Automatisch inloggen op Windows 11
  • › Welke muziekstreamingservice heeft de beste audiokwaliteit?
  • › Hoe maak je een hart op een toetsenbord
  • › Autocorrectie inschakelen