Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Docker Volumes и монтирование папок: почему пропадают данные и как их сохранить

Обновлено: 27.08.2026 · Официальная документация ↗

Почему после пересоздания контейнера база данных становится пустой?

По умолчанию файловая система внутри контейнера является эфемерной (временной). Когда контейнер удаляется командой docker rm или обновляется через docker-compose down, все новые файлы, таблицы MySQL или загруженные пользователями картинки безвозвратно удаляются вместе с изолированным слоем контейнера.

Тип хранилищаГде физически хранятся данныеДля чего лучше подходит
Стандартный контейнер (без томов)Во временном слое (удаляется с контейнером)Тестирование, stateless микросервисы
Docker Named VolumeВ системной папке Docker (/var/lib/docker/volumes/)Базы данных (PostgreSQL, MySQL, Redis)
Bind Mount (Монтирование папки)В любой указанной вами папке сервера (например, /home/user/app)Исходный код сайта, файлы конфигураций (nginx.conf)

Как правильно настроить постоянное хранение данных

  1. Вариант 1. Использование именованных томов Docker Volumes (Лучше для баз данных):

    Создадим постоянный том и подключим его к контейнеру MySQL:

    # Создаем том с именем mysql_data:
    docker volume create mysql_data
    
    # Запускаем контейнер с примонтированным томом:
    docker run -d --name db_server -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret mysql:8.0

    Даже если вы удалите контейнер docker rm -f db_server, том mysql_data останется нетронутым со всеми таблицами.

  2. Вариант 2. Использование Bind Mount (Монтирование конкретной папки сервера):

    Удобно для веб-сайтов, так как файлы можно редактировать прямо с хоста:

    docker run -d -p 80:80 --name my_web -v /var/www/my_site:/usr/share/nginx/html:ro nginx

    (Параметр :ro монтирует папку в режиме «только для чтения», защищая ее от изменений изнутри контейнера).

  3. Вариант 3. Настройка постоянных томов в docker-compose.yml:

    Пример правильного описания БД с сохранением данных в файле Compose:

    services:
      db:
        image: postgres:15
        environment:
          POSTGRES_PASSWORD: mysecretpassword
        volumes:
          - postgres_data:/var/lib/postgresql/data
    
    volumes:
      postgres_data:
💡 Практика специалистов: При использовании Bind Mount для баз данных на хостовых файловых системах Windows/macOS (через Docker Desktop) часто возникают проблемы с блокировкой файлов и падением производительности. На рабочих Linux-серверах для СУБД всегда отдавайте предпочтение нативным Docker Named Volumes.

Частые вопросы (FAQ)

Где физически лежат файлы тома на сервере?

В Linux тома Docker по умолчанию хранятся в защищенной системной директории /var/lib/docker/volumes/<имя_тома>/_data/.

Как удалить ненужный том, если он больше не используется?

Выполните команду docker volume rm <имя_тома>. Чтобы удалить сразу все неиспользуемые тома, используйте команду docker volume prune.

Удалит ли команда 'docker compose down -v' мои данные?

Да! Флаг -v принудительно удаляет описанные в compose-файле именованные тома. Для обычного перезапуска контейнеров всегда используйте 'docker compose down' без флага -v.

Как сделать резервную копию файлов из Docker Volume?

Самый простой способ — скопировать данные через временный контейнер или утилиту tar: docker run --rm -v mysql_data:/data -v $(pwd):/backup ubuntu tar -czvf /backup/mysql_backup.tar.gz /data.

Полезные материалы
Рекомендуем