Hi all

I’m running several docker containers with local persistent volumes that I would like to backup. I haven’t found an easy method to do so.

What do you use / recommend to do that? AFAIK you can’t just rsync the volume directory while the container is running.

  • Ruud@lemmy.worldM
    link
    fedilink
    arrow-up
    4
    ·
    1 year ago

    Rsync works fine for most data. (I use borgbackup) For any database data, create a dump using pg_dump or mysqldump or whatever. Then backup the dump and all other volumes but exclude the db volume.

  • Michael717@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    In general there is no problem in rsync’ing the volume bind directory. But that depends on the application, which is running in the container. I. e. you should not copy the files of a running database. It may corrupt the data while it’s being written.

  • easeKItMAn@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Bind mounts are easy to maintain and backup. However if you share data amongst multiple container docker volumes are recommend especially for managing state.

    Backup volumes:

    docker run --rm --volumes-from dbstore -v $(pwd):/backup containername tar cvf /backup/backup.tar /dbdata

    • Launch a new container and mount the volume from the dbstore container
    • Mount a local host directory as /backup
    • Pass a command that tars the contents of the dbdata volume to a backup.tar file inside /backup directory.

    docker docs - volumes

    Database volume backup without stopping the service: bash into the container, dump it, and copy it out with docker cp. Run it periodically via crontab