I'm currently working for Demonware (Activision) as a Build Engineer. The following comments are my own.
I've been using Docker daily since version 0.6. The speed, lightweight nature and simplicity drew me in from the very first docker run. Running Docker containers on baremetal was a joy. Simple to setup, simple to debug and simple to upgrade.
2 years later and while I still use Docker daily this "joy" is fading. As I move towards running containers in various public clouds more and more of the day is being spent within VMs and building AMIs. Running containers in VMs seems to be the most common and widely documented way to get containers running in Production. Public cloud providers are tweaking their infrastructure to allow containers to run in VMs. This is great for additional isolation but we lose some of the key benefits of Docker. Performance in particular. It feels wrong.
At the October Docker Meetup in Dublin we had 2 special guests, Tom Barlow from Docker and Casey Bisson from Joyent. Both gave great talks but it was something that Casey said that prompted this post. It was the "pureness" of Docker that attracted me in version 0.6. The predictability and minimal layers of abstraction meant that any unusal behaviour was quickly resolved by a reinstall of Docker. This has become more difficult when running Docker in a cloud. There are alot more variables in play now.
As mentioned above, public cloud providers are enabling Docker containers to run on their infrastructure which is fantastic for Docker adoption but not necessarily for the future of containerization. There is one company in particular that has designed their infrastructure around running containers natively. Based on technologies such as OpenSolaris, Zones, Crossbow and ZFS. Joyent are, in my opinion, years ahead of the competition.
I signed up for a Joyent account today and within 5 minutes I was running containers on baremetal within the Joyent datacenters. The setup was as simple as that initial Docker install back in September 2013. The experience was as pure as the first docker run command and most importantly it has put the joy back into spinning up containers on baremetal.
I'm not affiliated with Joyent in any way and have no idea how much todays experiments cost but removing the VM layer and running containers natively, as they deserve, is almost priceless. No more shoehorning containers into VMs just to get them running in the cloud.
Many companies are currently evaluating running Docker in production. If you find yourself in this situation then I would highly recommend trying Joyent.