Previously, to control an environment for an app or set of apps, you either dictated exactly the environment os version and libraries etc, or you tried to run some kind of wrapper like fabric and virtualenv or maven or chef or whatever. And it keeps breaking for real, and developers keep screwing up because they aren't running the exact deployed system.
Docker turns that around. It let's you specify the environment exactly, yet also treat that container as an app. It sorts out the versioning (git), and it makes it trivial for all devs to run the stack identically to production.
As I've just had to get oracle SDK working troubleshooting on my macbook, I can't say how appealing the docker way sounds.
With Docker, the metaphor gets extended to a dwelling with more communal space and shared resources (like a hotel or some type of commune). You have one large kitchen, one large laundry room, and a little space for any other amenities, but each room is its own unique dwelling that can utilize any and all of the external utilities.
EDIT: Really, the metaphor is better if you use chroot instead of VMs