1) data-only containers
2) решите задачу подъема самого сервера с запущенным Docker, в контейнерах задаете политику всегда перезапускаться - они вместе с самим Docker запустятся
3) в идеале по контейнеру на процесс либо логическую часть, к примеру MariaDB это один, Python сервер это второй и так далее
4) внимательно изучать внутренности, кроме официальных выбирать только те, которые имеют автоматические билды с отрытым Dockerfile и поддерживаются актуальными, иногда придется делать свои
5) ответ тот же что и 1) + резервное копирование/восстановление из томов
6) не встраивайте чувствительные данные в образы и не попадут
В качестве неплохого примера можете посмотреть мою разработку (правда, ориентирована на PHP, но суть та же, посмотрите как устроено):
https://github.com/nazar-pc/docker-webserver