It's mutual. Unix didn't solve problems for developers of large systems that stand on the shoulders of open source software libraries by failing to provide dependency resolution or versioning + namespacing source/built files. (An obvious [non-]decision given the timeline of its inception and intended usage, but a failure nonetheless.)
So then we got some of the former with system package managers designed for system administrators and some of the latter with version control/build systems/dependency tools designed by and for software developers, but they don't meet in the middle.
Docker is mostly used to just bridge the gap and force the system package manager to be a per-app-namespaced dependency/build support tool.
> Unix didn't solve problems for developers of large systems
That's a big problem right there. Why are systems large in the first place? http://vpri.org/ already showed we can do smaller —likely by 2 to 4 orders of magnitude. Solving the problems of large systems will only mitigate the symptoms. The root cause is size. We should solve that instead.
Sometimes problems really are just large. Sometimes you need results faster than a single microcomputer's CPU(s) can produce them and UNIX was invented too early to come with solutions for doing that in ways that prevent complexity. HPC is paying the price.
We're fixing it (efforts like Kubernetes, Hadoop, Mesos), but it's tough and we have a long way to go.
We have Docker et al. because people kept pursuing ever-more-complex and ever-more-intertwined dependencies and silliness.
The people failed Unix (and its successor, Plan 9), and not the other way around.