vault backup: 2026-05-24 15:03:28

This commit is contained in:
Dmitry
2026-05-24 15:03:28 +03:00
parent 6189cfdd1c
commit 7335ca7c23
705 changed files with 18360 additions and 154 deletions
@@ -0,0 +1,62 @@
---
status: stable
type: concept
tags:
- devops
- containerization
- docker
created: 2025-12-17
updated: 2026-05-07
title: Volume - Docker
---
# Volume - Docker
**Некоторые данные стоит хранить независимо от контейнера, для этого существует понятие Volume.**
Стоит так хранить: БД, логи, конфиги, артефакты, настройки, …
Для постоянного или персистентного хранения используются Docker Volume. Это буквально монтирование хостовой директории внутрь контейнера, для работы с данными контейнера напрямую.
Возможности Docker Volumes:
1. Выгрузка данных контейнера на постоянное хранение
2. Работа в подмонтированных каталогах с интенсивной записью данных
3. Совместное использование данных несколькими контейнерами
Docker volumes создают тома, которые монтируются в контейнер.
По умолчанию тома docker volumes создаются в каталоге `/var/lib/docker/volumes/`
![](Volume%20-%20Docker_image.png)
## Типы Volumes
1. **Host** DV:
`docker run -v /home/mount/data:/var/lib/mysql/data`
При запуске контейнера, мы пробрасываем конкретный каталог на хосте в конкретный каталог в контейнере
(есть опция флагов, для редактирования прав доступа)
2. **Anonymous** DV:
`docker run -v /var/lib/mysql/data`
При таком подходе, Volume создастся в `/var/lib/docker/volumes`
3. **Names** DV:
`docker run -v name:/var/lib/mysql/data`
Аналогично второму варианту, Volume создается в директории по умолчанию, но ему присваивается метка `name`, которую можно переиспользовать.
## Организация Доступа К Файлам В Docker Volumes
По умолчанию, uid/gid внутри контейнера и на хосте идентичны, поэтому владелец/группа и права доступа внутри смонтированного каталога будут эквиванлентны.
Изменить данные поведение поможет фича под названием "userns-remap" - она позволит соотнести uid/gid контейнера к другим uid/gid хоста
Проблема в том, что по умолчанию, в volume владелец root - что не очень хорошо.
Для управления этой фичей, нужно отредактировать конфигурацию по пути `/etc/docker/daemon.json` 
```bash
{
"userns-remap": "<username>"
}
```
## Связанные заметки
- [[File Permissions]] — uid/gid маппинг в Docker Volumes напрямую зависит от Linux-прав доступа; проблема "владелец root по умолчанию" решается через chmod/chown
- [[Active Storage]] — Active Storage в Rails хранит файлы вне БД; в Docker-деплое они должны персистироваться через Volume, иначе теряются при перезапуске контейнера