First and foremost Disclaimer: I work for a startup that is making products using docker/containers and our future is hugely tied with fortunes of docker, make what you want of that.
But thats not the sole reason why i write what i write now (if you believe my word which you shouldn't so judge on your own).
Ever since I was shown how BSD jails and chroot works i had used them for personal development (thats for last 20 years now). Then came the VM ecosystem and even at work i could get same benefits (more on that below) as those personal setups. Then came LXC and subsequently docker... in my view its the same with addition of docker hub/repo and most importantly versioning addition, which is a huge differentiator.
What are those benefits?
- 1. Consistent environment: OS needs maintenance, typical upgrade causes my system to break down dev setups. I need quick way to reproduce what went in to dev on a newly patched system.
- 2. Elimination of "works on my machine" . Well to the extent its caused by changes in environment and not incompetence. Need I say more?
- 3. I can go back to a released product and figure out exact reasons the one big paying customer is having issues woth. Replicating the build that was released to the customer and testing it in the exact env released to customer even years backwards. Customers upgrading regularly is a myth and we can't force them to upgrade just because one of bugs is biting them.
- 4. Elimination of dependency on IT for provisioning different environment. Need three setups to test three different JS / python libraries? need to make your code compatible with latest python? no need to wait for IT to provide new machine/vm just create new versions of dockerfile and run it on your dev machine simultaneously without interfering with your daily workflow.
- 5. Broken dev setup? Packages all screwed up ? just go back to known working setup in jiffy.
- 6. Testing becomes much more reproducible probably duplication of combination of above, but QA loves it
And plenty more at one time cost of creating a docker environment. Thats one time across your entire dev team not just you, cost
And these are all just from the dev point of view. Not going into efficiency of baremetal vs vm vs containers etc. and production is a different beast.
And as added bonus you can integrate your tests easily with any CI CD just docker pull and run tests on any worker machine. Or even dev environments can be sent on build farms in a jiffy (my startup works in this space) but from the author's description it doesn't seem like build and test are too costly for him. But still.