📝 Docker

Docker Volumes: сохраняем данные

P
Автор
PyLand Team
📅
Опубликовано
08.05.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
329
🌿
Уровень
Средний

По умолчанию данные внутри контейнера не сохраняются — удалил контейнер, данные пропали. Volumes решают эту проблему.

Три способа монтирования

1. Named Volume (рекомендуется для данных)

Docker сам управляет хранилищем. Данные переживают удаление контейнера.

docker run -v postgres_data:/var/lib/postgresql/data postgres

В docker-compose.yml:

services:
  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:  # объявляем volume

2. Bind Mount (рекомендуется для разработки)

Монтируешь папку с хоста в контейнер. Изменения в любую сторону видны сразу.

docker run -v /path/on/host:/path/in/container myapp
docker run -v $(pwd):/app myapp           # текущая папка
docker run -v ./src:/app/src myapp        # относительный путь

В docker-compose.yml:

services:
  web:
    volumes:
      - ./src:/app/src     # для live reload в разработке
      - ./static:/app/static

3. tmpfs (только для Linux)

Данные в памяти, не на диске. Для временных данных.

docker run --tmpfs /tmp myapp

Управление volumes

docker volume ls                    # список volumes
docker volume inspect postgres_data # информация о volume
docker volume rm postgres_data      # удалить volume
docker volume prune                 # удалить неиспользуемые

Когда что использовать

Тип Когда использовать
Named volume Данные БД, uploads, постоянные данные
Bind mount Разработка — hot reload кода, конфиги
tmpfs Кэш, сессии, чувствительные данные

Паттерн для разработки

Монтируй код как bind mount, зависимости — как named volume:

services:
  web:
    build: .
    volumes:
      - .:/app                      # код — bind mount для hot reload
      - /app/.venv                  # изолируем .venv в volume

Без второй строки .venv с хоста перекроет .venv из образа.

Бэкап volume

# Создать бэкап volume в tar архив
docker run --rm -v postgres_data:/data -v $(pwd):/backup \
  ubuntu tar czf /backup/backup.tar.gz /data

# Восстановить
docker run --rm -v postgres_data:/data -v $(pwd):/backup \
  ubuntu tar xzf /backup/backup.tar.gz -C /

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Multi-stage builds: уменьшаем Docker-образ

Большой образ — это медленная загрузка, больше места на диске и большая поверхность атаки. Multi-stage...

📅 30.06.2026 👁️ 321
📝

Docker Compose: продвинутые возможности

Базовый docker-compose.yml — это старт. Для production нужны healthcheck, профили, override-файлы и управление ресурсами.

📅 30.06.2026 👁️ 306
📝

Docker Networking: как контейнеры общаются

Контейнеры изолированы, но часто должны взаимодействовать друг с другом и с внешним миром. Docker решает...

📅 30.06.2026 👁️ 306
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Docker: От хаоса к контейнерам Открыть программу курса