1 проект == 1 контейнер ?
Нет, один сервис == 1 контейнер. То есть если у вас используется Nginx, MariaDB и ещё что-то, то все они будут в отдельных контейнерах связанные виртуальной сетью и, возможно, будут иметь доступ к одному хранилищу данных.
Нужно ли каждый раз скачивать контейнер/образ или можно скачать некий "чистый" контейнер и его как-то "копировать" для дальнейших проектов ?
Образы скачиваются с репозиториев при использовании и обновляются оттуда же. Если вам нужно кастомизировать существующие образы то их можно наследовать и потом переиспользовать.
В целом всё это описано как на официальном сайте, так и в куче обучающих статей. Можете посмотреть на мою разработку где всё это собрано вместе, может будет понятнее:
https://github.com/nazar-pc/docker-webserver