Having worked for some time with configuration management and backend development and seeing the growing pains that happen after any "non-trivial" use case of it like: obscure declarative languages/DSLs, tangled messes of declarative vs scripted configurations, inter-dependencies that are not so obvious until you hit a corner case, etc., I can say that Docker has been a breeze, even when I encounter a breaking bug in a new release that breaks it somehow.
It's easier to get our devs wrapping all of their dependencies in a container, it's easier to just deploy the container, it's easier to separate what's "state" and "data" that should be maintained from the application and what's throwable.
Docker helps a lot to get away from the snowflake-machine mentality, everything is ephemeral so think carefully what you really need not to be like that and treat those cases like they should.
I do understand a lot of criticism about Docker but having worked with almost every mainstream configuration management tool (CFEngine, Puppet, Chef and Ansible) I can say I truly prefer to only have to care about Docker (or containers, I'm taking a look at other solutions atm) than the tangled mess that every single of them become later on.
And I'm sorry, only using "package managers" don't cut for the vast majority of deployments, you still have to manage configuration files, env vars and all of the other ugly mess.
How long have you worked with a scale of hundreds to thousands of automated servers?