or
I have a server
I want to run software a and software b but a and b use very incompatible versions of the same library.
Slap each in a container, put exactly what it needs in there, and no more.
Problem solved.
Technically there are non-container ways around this but some of them are hairy and containers are ez.
It's *mostly* a convenience thing until you start getting into things like spinning up and down containers automatically as use of a service goes up and down, in an effort not to over- or under-provision compute resources, but that's mostly a cloud at scale kinda thing