Dockerfile для каждого контейнера необязателен. Dockerfile - в основном для специфических случаев. У меня к примеру процентов 80 контейнеров просто используют какой-нибудь python:3.9, а все библиотеки монтируются в виртуальное окружение непосредственно при запуске.
Но если надо - то кладите где вам удобно, да подключайте директорию в контексте для билда образа.
но для того чтобы каждый раз выполнялся нужный мне файл, при запуске контейнера мне нужно как-то передать туда название файла, как это сделать?
монтируете директорию - да из нее нужные файлы и запускаете
3) Для работы с Docker из Python я нашел библиотеку docker, стоит ли ее использовать
Она для довольно специфических случаев использования докера. Проще запускать контейнеры каким-нибудь
docker-composer