Until now I just happily used the one provided by the framework I use (or was grumpy that I didn't get to use one, in the case of WordPress things) and never thought too deeply about how DI works. Turns out: it's actually not that complicated if it is very basic.