Kontenery Dockerowe potrafią przechowywać dane – można wprowadzić zmiany w kontenerze, wyłączyć go i ponownie włączyć, i zobaczymy że zmiany dalej tam są:
docker run -it ubuntu bash
touch text.txt
ls

docker stop your_container_name
docker start -ai your_container_name
ls

Wszystko fajnie, ale jeśli usuniemy kontener no to wszystko zostanie usunięte. Czasami nie jest to problemem, ale jeśli jest, to są na to dwa rozwiązania – Volumes oraz Bind mounts.
Volumes – zaufaj silnikowi Dockera (gdzieś Ci to przetrzyma)
Używanie wolumenów (volumes) polega na zleceniu silnikowi Dockera trzymania danych z jakiegoś katalogu kontenera w danym wolumenie. Nie wiemy gdzie to jest trzymane, ale wiemy pod jaką nazwą wolumenu:
docker run -it -v volume_name:/test ubuntu bash
cd test
touch test.txt
docker stop your_container_name
docker rm your_container_name
docker run -it -v volume_name:/test ubuntu bash
cd test
ls

Bind mounts – nie ufaj silnikowi Dockera (przechowuj to u siebie)
Używanie Bind mounts polega na wydelegowaniu katalogu na naszej lokalnej maszynie dla konkretnej ścieżki w kontenerze. Wszystkie dane są trzymane w podanym katalogu lokalnym (można je podejrzeć):
docker run -it -v C:\test_bind_mounts:/test ubuntu bash
cd test
touch test.txt
docker stop your_container_name
docker rm your_container_name
