# Docker — Volumes (one-screen)

## 1) Зачем
Данные контейнера по умолчанию **неперсистентны** (контейнер удалили — данные исчезли). Поэтому “живущие” данные (БД, логи, конфиги, артефакты) выносят во **volumes**.

По умолчанию Docker volumes лежат в:
`/var/lib/docker/volumes/`

## 2) Варианты подключения
### Host bind-mount
Монтируем конкретный путь хоста:
```bash
docker run -v /host/data:/var/lib/mysql/data ...
```
Плюс — прозрачно. Минус — завязка на конкретный путь/права.

### Anonymous volume
```bash
docker run -v /var/lib/mysql/data ...
```
Docker сам создаст volume в дефолтной директории.

### Named volume
```bash
docker run -v mydb:/var/lib/mysql/data ...
```
Как anonymous, но есть имя, можно переиспользовать.

## 3) Права доступа (важно)
Права/владелец в смонтированном каталоге зависят от **uid/gid** внутри контейнера.

Чтобы не монтировать всё от root, можно использовать **userns-remap** (маппинг uid/gid контейнера → другие uid/gid на хосте).
Настраивается в `/etc/docker/daemon.json`:
```json
{
  "userns-remap": "<username>"
}
```

---
**Source:** [[Volume - Docker|Volume - Docker]]
