I'm still on the sidelines of Docker development, so this is just educated guessing from what I've read/overheard. Responding to your points out of order:
- it decouples my database container - but why would I want that? I won't change database image, as I'm not developing a database here.
- it prevents me from accidentally deleting a container - does it really? It's in no way more protected from deletion that my single all-in-one container is
Say you, or the next guy to maintain this system, come along at some point later and want to upgrade your version of postgres (or whatever your SQL stack is). You decide it would be easier to spin up a new docker container/image for the new version that layer it on top of the old one. If your single docker container has both data and software on it, you don't have that option. Sure, you can still screw up your data volume, but you can't screw up your data by mucking about with a decoupled server container.
- it allows me to share the data - but again, I have nobody to share it with, just one container using it
You may not be sharing it now; you may not ever have anyone to share it with. But that doesn't mean you won't want to share it between systems, applications, servers, etc.
- I can easily back it up - just like I can back up the data inside my only container, right?
Sure, but if you're backing up the whole container, you're backing up the software along with the data each time, which is unnecessary. If you're dumping the data out of your container, then you're not really thinking with containers.
One clear advantage I see to having a decoupled data volume is for moving data between environments. Say you want a fresh snapshot of data for testing in your stage environment. Just grab a prod container backup and copy it down. If you want to truncate old data or trim down certain tables to make this manageable, it's pretty easy to imagine a build agent starting up a server container connected to this backup and running some scripts or store procedures (which you might not want to have on your prod containers for security reasons).
You could even have a minimal data container that just has the stub table schemas on it that you use for development and test. You could have a separate all-in-one container for that, but when you need to update your db version, you have to update multiple containers, rather than making one updated/new container and letting it modify the data volumes for you.