Вступить в клуб →
лёгкаявопросDocker и сборка образов

Данные базы пропали после пересоздания контейнера

На тестовом стенде PostgreSQL запущен так:

docker run -d --name pg -e POSTGRES_PASSWORD=secret postgres:16

В базу залили тестовый набор данных. Через неделю понадобилось поменять переменную окружения, инженер выполнил:

docker rm -f pg
docker run -d --name pg -e POSTGRES_PASSWORD=other postgres:16

База поднялась пустой, все данные пропали.

Почему?

  • Данные лежали в записываемом слое контейнера и удалились вместе с ним: для сохранения нужен volume или bind-mount на каталог данных
  • Смена значения `POSTGRES_PASSWORD` заставляет образ инициализировать кластер заново и затирает каталог данных: при прежнем пароле данные бы никуда не делись
  • Нужно было останавливать контейнер через `docker stop`, тогда PostgreSQL сбросил бы данные в образ
  • Контейнер не был запущен с политикой `--restart=always`, поэтому Docker очистил его состояние

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела