And then security patches are rolled out accordingly to be updated automatically by the OS service. Not sure how good with docker container is on this part.
If you host something serious and you don't need special builds of databases it is probably better not to use docker. But it's a bit more effort.
I don't know how you wan to enforce that all developers and all production machines use the exact same environment. Maybe your production still runs RHEL 7, so all the developers need to run their desktop on CentOS 7?
Or take open source projects. Isn't it easier to put in the readme: "To start developing install docker and run 'docker-compose up'" vs. "Please install Ubuntu 18.04 into a VM, those 100 packages, but make sure this 50 packages are not installed."
In my experience virtualized desktop environments are very painful to work on, even with fast connections.
Docker (or containerization in general) is very useful for development. Much more useful than for deployment/production.
If that is not available, then it depends on how complex the dependency graph is. If it is simple and I can just `apt install` all dependencies then I'll wrap the install in an Ansible Playbook and use systemd. If not I create my own docker-compose.yml for deployment.
edit: when multiplexing multiple projects on the same host (happens with very small projects) I always use docker.