When I started learning #docker it was a bit confusing

To ease the learning curve, here’s how I explain docker to testers:

(simplifying things A LOT to make it easy to understand here)

1. Imagine a windows environment ‘X’ running on a desktop machine
2. Now create an image of that environment ‘Y’
3. Run that image (Y) on top of your desktop environment (X)
4. Any app running on Y would not affect X right? So that’s the first thing to appreciate.

5. Now whats common between X and Y? The OS, windows in this case.
6. So let’s take out what’s common, the OS. Remove the duplicate one from Y

And that’s what Docker does, it removes the duplicate OS and related resources, and uses the OS from X for running stuff on Y as well

All this while maintaining the isolation of both environments..

Along with a bunch of other benefits that come with this..

To read on the evolution towards docker and a brief intro on how it works:

Introducing testers to Docker