1.5 KiB
1.5 KiB
Docker — Volumes (one-screen)
1) Зачем
Данные контейнера по умолчанию неперсистентны (контейнер удалили — данные исчезли). Поэтому “живущие” данные (БД, логи, конфиги, артефакты) выносят во volumes.
По умолчанию Docker volumes лежат в:
/var/lib/docker/volumes/
2) Варианты подключения
Host bind-mount
Монтируем конкретный путь хоста:
docker run -v /host/data:/var/lib/mysql/data ...
Плюс — прозрачно. Минус — завязка на конкретный путь/права.
Anonymous volume
docker run -v /var/lib/mysql/data ...
Docker сам создаст volume в дефолтной директории.
Named volume
docker run -v mydb:/var/lib/mysql/data ...
Как anonymous, но есть имя, можно переиспользовать.
3) Права доступа (важно)
Права/владелец в смонтированном каталоге зависят от uid/gid внутри контейнера.
Чтобы не монтировать всё от root, можно использовать userns-remap (маппинг uid/gid контейнера → другие uid/gid на хосте).
Настраивается в /etc/docker/daemon.json:
{
"userns-remap": "<username>"
}
Source: Volume - Docker