docker volume to zestaw poleceń do zarządzania wolumenami, czyli trwałym magazynem danych w Dockerze. Kontener z natury jest ulotny — kasujesz go i znika razem z całą zawartością. Wolumen rozwiązuje ten problem: trzyma dane (bazę, uploady, cache) poza warstwą kontenera, więc przeżywają jego restart, przebudowę czy usunięcie. Za pomocą podkomend tworzysz wolumeny, listujesz je, podglądasz szczegóły i sprzątasz te, których nikt już nie używa.
Składnia i najważniejsze opcje
Podstawowa forma to docker volume KOMENDA [opcje], gdzie KOMENDA to jedna z podkomend zarządzających.
create— tworzy nowy wolumen (np.docker volume create dane)ls— listuje wszystkie wolumenyinspect— pokazuje szczegóły: sterownik, ścieżkę montowania, etykietyrm— usuwa wskazany wolumenprune— masowo czyści nieużywane wolumeny-d, --driver— wybór sterownika przy tworzeniu (domyślnielocal)-o, --opt— opcje sterownika, np. montowanie konkretnego katalogu hosta-f, --filter— filtruje wynik przylsiprune(np.dangling=true)
Przykłady użycia
docker volume create pgdata— tworzy nazwany wolumenpgdata, który podepniesz pod bazę PostgreSQL.docker volume ls— wypisuje wszystkie wolumeny; dorzuć-q, żeby dostać same nazwy do skryptu.docker run -d -v pgdata:/var/lib/postgresql/data postgres— podpina wolumen pod kontener, więc dane bazy zostają nawet po jego usunięciu.docker volume inspect pgdata— zwraca JSON ze ścieżką na hoście (Mountpoint) i metadanymi — przydatne przy debugowaniu, gdzie fizycznie leżą dane.docker volume prune— usuwa wszystkie nieużywane wolumeny anonimowe; pyta o potwierdzenie, więc nie skasuje nic przez przypadek.
Częste błędy i pułapki
Największa zasadzka to prune. Domyślnie docker volume prune usuwa tylko wolumeny anonimowe — te nazwane (jak pgdata) zostawia w spokoju. Dopiero docker volume prune --all (lub -a) kasuje również nieużywane wolumeny nazwane. To różnica między „posprzątałem śmieci” a „skasowałem produkcyjną bazę”, więc czytaj flagę dwa razy.
Druga pułapka: docker volume rm odmówi usunięcia wolumenu używanego przez kontener (nawet zatrzymany). Najpierw usuń kontener (docker rm), dopiero potem wolumen. Wymuszanie przez -f tu nie pomoże, bo flaga ignoruje tylko brak wolumenu, nie aktywne powiązanie. I pamiętaj: usunięcie wolumenu jest nieodwracalne — Docker nie ma kosza.
Powiązane komendy: docker run -v i docker run --mount (podpinanie wolumenów), docker system prune --volumes (sprzątanie całego systemu), docker inspect oraz docker compose z sekcją volumes.