Ответ
Нет, при простой остановке (docker stop) данные внутри контейнера сохраняются в его слоях файловой системы. Контейнер можно перезапустить (docker start), и данные будут на месте.
Потеря данных происходит в двух случаях:
- Удаление контейнера (
docker rm). Данные, созданные в его слоях, теряются безвозвратно. - Использование контейнера без томов (volumes) для хранения состояния. Это антипаттерн для stateful-данных.
Правильный подход — использование томов (volumes) или bind mounts:
# Создание именованного тома и его подключение
docker volume create app_data
docker run -d --name myapp -v app_data:/var/lib/app myapp:latest
# Остановка и удаление контейнера не затронут данные в томе 'app_data'
docker stop myapp
docker rm myapp
# Новый контейнер получит доступ к тем же данным
docker run -d --name myapp2 -v app_data:/var/lib/app myapp:latest
Для критичных данных всегда используйте тома или монтирование хостовых директорий.