Moinsen,
ich bin hier garantiert nicht die Docker-Leuchte, da gibt es weitaus erfahrenere Menschen hier

.
Rein laienhaft würde ich es so zusammenfassen:
du kannst container so laufen lassen, dass keine Daten verblieben, wenn du den Container wieder verwirfst (nicht-persistent), die Daten werden dann rein innerhalb des Containers gespeichert und sind eben auch mit dem Container-Aus "weg".
Da das aber nicht immer unbedingt erwünscht ist, gibt es vor allem 2 Möglichkeiten, um Daten aus dem Container persistent (also erhaltend auch nach Löschen des Containers selbst) zu machen:
1. Angeben von bind mounts
2. nutzen von Volumes
1, Ist oben ja bereits erklärt, du mappst einen Ordner auf dem host System mit einem im Container laufenden Ordner (der anders nicht per se erreichbar ist, weil im Container). Das ist dann nützlich, wenn du sowohl vom Container als auch vom host aus auf diesen Ordner zugreifen musst. Beispiel: paperless, da gibt es Ordner, die im Betrieb nicht genutzt werden müssen (Datenbank, läuft alles Container-intern) aber auch Ordner, auf die du zugreifen willst (inbox, media, export für document_exporter). Diese letzteren würdest du dann mit bind mount erledigen.
2. Volumes sind das Mittel der Wahl, um Daten persistent aufzubewahren. Allerdings sind die Volumes innerhalb der docker Verwaltung und somit vom host nicht einfach einzusehen und erreichbar. Innerhalb der docker Verwaltung (also unterhalb des docker root-Verzeichnisses, idR /var/lib/docker), nicht aber innerhalb der Container. Genau das ist der Trick, denn auch wenn du einen Container "platt"machst, die Daten bleiben im Volume dazu erhalten.
Also: beides um Daten auch nach Entfernen eines Containers weiter vorzuhalten, um ein "Aufblasen" der Containergröße zu vermeiden (würde ja passieren, wenn Daten IM Container gespeichert werden)...
...wobei Volumes direkt und unter docker verwaltet werden, bind mounts aber mit ihren gemappten Ordnern selber verwaltet werden auf dem hostsystem.
...Volumes sind dabei nicht einfach so erreichbar vom hostsystem, bind mounts (je nach Rechtevergabe) aber schon (ist ja ein "normaler" Ordner auf dem host. Volumes also eher nicht für Daten die auch regelmäßig vom hostsystem (oder extern) erreichbar sein müssen.
...Volumes sind "somewhat" sicherer als bind mounts, weil durch die trennende docker Verwaltung eine gewisse Separation zwischen Container Daten und host bestehen bleibt, bei Nutzung von bind mounts wird diese Trennung quasi aufgehoben, was eben potentielle Risiken birgt (aber eben afaik auch nicht immer wirklich vermeidbar ist).
Das ist jedenfalls
mein kleiner und bescheidener Wissensstand dazu, sicherlich grob verkürzt (und ggf deutlich zu ergänzen)....mal sehen, was die docker Pros dahingehend noch beitragen.
