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.
Use bind mounts instead of docker volumes. Then you just have normal directories to back up, the same as you would anything else.
In general, it’s not a problem to back up files while the container is running. The exception to this is databases. To have reliable database backups, you need to stop the container (or quiesce/pause the database if it supports it) before backing up the raw database files (including SQLite).
This is your answer. It also has the benefit of allowing you to have a nice folder structure for your Docker setup, where you have a folder for each service holding the corresponding compose yaml and data folder(s)
it’s better to stop the service mounting those volumes before backing them up or you may break something with hot backup
Exactly the reason why i always exchange the volumes in any compose file with bind mounts.
Also you don‘t have the provlem of many dangling volumes
I don’t even understand what the advantage is to using volumes rather than mounts? So I too always use mounts.
I think volumes are useful when you don’t want to deal with those files on the host. Mainly for development environments.
I wasn’t able to understand volumes at first, and my team mate told me I had to use binders to run mysql. My project folder used to have a docker/mysql/data. Now I just point MySQL data to a volume so I don’t loose data between restarts. And I don’t have to deal with a mysql folder on my project with files I would never touch directly.
In my opinion, volumes are useful for development / testing environments.
I’m not sure either. The only thing I could come up with is that with volumes you don’t have to worry about file ownership. That’s usually taken care of for you with volumes from what I understand.
docker volume is an exact same normal directory under /var/lib/docker, there’s no difference with regard to backup consistency.
there’s no silver bullet here, it’s best to use tools specific to whatever is running in the container i.e. wal-g for postgres, etc.