Stick to VMs for production use, for now. With thin provisioned storage and in-memory de-dupe.
Everything else? VMs it is. The overhead is so low nowadays that it's totally irrelevant for the vast majority of use cases.
I do Devops, and Docker provides very little benefit in production (unless you're an org with your own non-cloud computing resources, where you're going to orchestrate with something like Kubernetes; even then, there's dissent in the ranks between that project and Docker).