The way to think about it is that there are a handful of long-running docker containers: server, scheduler, webapp, db. I don't have exact numbers for what's needed for these.
Then anytime we run a "job" (e.g. replicate some data), the scheduler spins up 2 docker containers, one for the source one fo r the destination. these containers live as long as the replication job, and then they are killed.