I've been a big virtual machine advocate since 2011 when VMWare first came on the scene. There are huge benefits from scaling, isolating services, and improved performance.
I've always heard and read about Docker and containers. A lot of "professionals" were using this solution as well. It went on to my I would like to learn about that one day list. Well - that day has just jumped up on my list. I was at a user meetup - PHPVegas.com and there was a presentation on Docker. My mind was blown!
Coming from from the operations side, I always thought of Docker as another hypervisor that could run virtual machine. While this is true - that thinking is more of Hyper-V way. Docker is so much more with the ability to run containers; single and lightweight software packages in an isolated environment. Meaning you can have a single container for PHP, database service, caching service, etc. Once your code is working in Docker on your local machine, push the code, rebuild that entire container on production. "If it works on your machine, it will work in production."" How awesome - no more - it worked on my machine blame game!?
In Cody Moss's presentation, he installed the production build of code on his local machine and then extended a test container wrapper around the production build allowing him to build on-top of production and fully test as if it were production then easily merge the code and ship.
This use case was a big game changer and opens up a whole new realm of devops. I really enjoyed this mindset of breaking the virtual machine down into smaller, focused, confined pieces of software. With the ability to swap out software via containers on the fly. Having the same exact build / testing process on production certainly will make me sleep better at night. Do not be surprised if you see more Docker articles in the future.