Ce face docker volume
Sistemul de fișiere al unui container este efemer: tot ce scrie aplicația în interiorul containerului se pierde când rulezi docker rm. Volumele gestionate de Docker (named volumes) rezolvă această problemă stocând datele într-un director separat pe gazdă (pe Linux, în /var/lib/docker/volumes/), independent de ciclul de viață al containerelor.
Volumele sunt metoda recomandată pentru baze de date (PostgreSQL, MySQL, MongoDB), fișiere încărcate de utilizatori sau cache-uri: funcționează identic pe Linux, macOS și Windows, au performanță mai bună decât bind mount-urile pe Docker Desktop și pot fi partajate între mai multe containere.
Docker nu șterge niciodată singur un volum cu nume când ștergi containerul; trebuie să îl ștergi explicit cu docker volume rm sau docker volume prune.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
create [nume] |
Creează un volum nou cu numele dat (sau cu un nume generat aleatoriu dacă lipsește). |
ls |
Listează toate volumele existente pe mașină. |
inspect nume |
Afișează detalii JSON despre volum, inclusiv calea fizică (Mountpoint). |
rm nume... |
Șterge unul sau mai multe volume care nu sunt folosite de niciun container. |
prune [-a] |
Șterge volumele nefolosite: implicit doar pe cele anonime, cu -a și pe cele cu nume. |
-f, --filter |
Filtrează lista sau curățarea, de exemplu dangling=true (volume neatașate niciunui container). |
Exemple
Exemplul 1: Crearea și inspectarea unui volum pentru PostgreSQL
Vedem unde este stocat volumul pe discul gazdei.
docker volume create pgdata
docker volume inspect pgdata
Ieșire în terminal
pgdata
[
{
"CreatedAt": "2024-10-23T08:12:04Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/pgdata/_data",
"Name": "pgdata",
"Options": null,
"Scope": "local"
}
]
Exemplul 2: Backup al unui volum într-o arhivă .tar.gz
Pornim un container temporar Alpine care montează volumul read-only și directorul curent, apoi arhivează conținutul.
docker run --rm -v pgdata:/sursa:ro -v "$(pwd):/backup" alpine tar czf /backup/pgdata-backup.tar.gz -C /sursa .
Exemplul 3: Listarea volumelor orfane (nefolosite de niciun container)
Filtru util înainte de a face curățenie pe disc.
docker volume ls -f dangling=true
Ieșire în terminal
DRIVER VOLUME NAME
local 4f8a2b1c9d0e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a
local vechi_cache
Greșeli frecvente
- Rularea
docker volume prune -asaudocker compose down -vpe un server de producție: șterge ireversibil volumele bazelor de date care nu sunt atașate unui container activ în acel moment. - Editarea directă a fișierelor din
/var/lib/docker/volumes/de pe gazdă în timp ce containerul rulează: poate corupe permisiunile sau baza de date.
Comenzi înrudite
docker run -v / --mount: Atașează volume, directoare de pe gazdă (bind mounts) sau memorie RAM (tmpfs) la un container.docker run: Creează și pornește un container nou dintr-o imagine.docker inspect: Afișează în format JSON toate detaliile de nivel jos ale unui obiect Docker.docker system prune: Verifică spațiul ocupat de Docker (system df) și șterge resursele nefolosite (system prune).