1. Да, я так часто делаю, особенно для тех стеков, с которыми я часто не работаю.
2. Тут смотря что вы имеете ввиду.
Есть команды docker run/docker exec/docker-compose run, они либо создают контейнер и запускают команду, либо запускают команду на существующем контейнере, например,
bash, либо
php -a,
psql - таким образом можно попасть в интерактивную среду внутри контейнера.
3. Как настроете. По умолчанию все данные хранятся внутри контейнера и они будут потеряны при следующем рестарте. Для данных, которые нужно сохранять между рестартами, например база данных, есть
volume. Если кратко, можно забиндить часть данных внутри контейнера либо на файловую систему, либо в специальное хранилище докера.
4. Да, можете для примера посмотреть как устроены docker-compose.yml php + mysql + nginx или что вам ближе. Рекомендую просто потыкать, попробовать своей hello world под docker-compose запустить.
5. Пункт 4, посмотрите какой-нибудь простенький docker-compose.yml, чтобы там БД была и приложение в разных контейнерах, думаю у вас вопросы многие уйдут