1. Почитайте раздел "Where to Store Data"
в документации по контейнеру. Если вы хотите использовать общую базу, то каталог с ней нужно монтировать в контейнер. Как это сделать в документации написано.
2. Dockerfile - это рецепт подготовки контейнера, yaml - это наверное от docker-compose (утилита, нужная для запуска нескольких связанных между собой контейнеров)
3. Правильно.
4. Папку с исходниками можно подмонтировать с вашей машины, либо скопировать в контейнер в момент его подготовки.
Имхо, если у вас таки машина на Ubuntu и PHP, Mysql, Apache, Nignx гораздо проще и быстрее это все настроить прямо на самой машине.