Как правильней сохранять состояние БД в docker?
-v /mysql:/var/lib/mysql  это вполне по феншую
Я делаю что-то вроде этого:
-  в контейнере бд -v ./mysql:/var/lib/mysql 
-  в контейнере веб сервера -v ./www:/var/www/html
-  в случае необходимости сборки собственных образов держу в папке build докерфайлы и нужные им данные.
И в одной папке с проектом у меня папка с базой данных, папка со скриптами/исходниками и другими файловыми данными и папка с образами.
Все аккуратно лежит рядышком, запускается и гасится через docker-compose в одном комплексе.
Смысла делать именнованные docker volumes я не понял, тоже самое, только будет лежать в папке /var/lib/docker. Единственный резон это если том с данными используется сразу несколькими контейнерами, и по имени можно сразу понять что это такое.
постоянно делать дамп при завершении работы и при старте заливать?
Не удаляйте контейнер, тогда данные не пропадут, а в контейнер приложения можно примаунтить сорцы, и "обновлять" без перезапуска.