When I was working on a docker-based build/test/deploy solution a few months ago, its performance was so anemic I wanted to tear (what's left of) my hair out, especially during a development/testing cycle.
I got sidetracked by other things and haven't gotten back to it, but if I do and it's still as bad as it was, I don't think I'll want to continue on that path.
I haven't seen the code but have played with LVM2 LVs / device mapper myself on my own containers-based infrastructure and also seen performance issues in some situations.
Fundamentally (1) LVM2 LVs are capable of single-depth snapshots only, forcing hacks like an actual full blockstore copy if code expects duplication. (2) Docker was written primarily against aufs which provides rapid arbitrary-depth snapshots.
I suspect this is the heart of the issue... ie. Docker expects features this storage subsystem wasn't designed to support.
I got sidetracked by other things and haven't gotten back to it, but if I do and it's still as bad as it was, I don't think I'll want to continue on that path.