📝 Docker

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

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
08.05.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
52
🌱
Уровень
Начальный
🐦 💼 ✈️

По умолчанию данные внутри контейнера не сохраняются — удалил контейнер, данные пропали. 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)

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

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

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

🔗 Похожие

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

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

📝

Слои и кэширование в Docker

Каждая инструкция в Dockerfile создаёт слой — промежуточный образ. Docker кэширует слои и переиспользует их...

📅 08.05.2026 👁️ 63
📝

Docker Hub — хранилище образов

Docker Hub — публичный реестр Docker образов. Как npm для Node.js или PyPI для Python,...

📅 08.05.2026 👁️ 51
📝

Docker Compose: многоконтейнерные приложения

Docker Compose — инструмент для запуска нескольких связанных контейнеров как единого приложения. Конфигурация описывается в...

📅 08.05.2026 👁️ 51

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!