I use Docker in production with Docker Compose for containers orchestration. Each service has its own Git repo with a compose file describing the orchestration. Swarm for distributed services and managing multiple servers.<p>Everything is a container and could be scaled, destroyed, restarted in a very simple way.<p>Machine creation is automated with Terraform and Ansible for provisioning, no matter the provider.
I run a small 4 node mesos cluster. So far it's been great, took a day or two to setup and has been running for about a year now with little to no maintenance. (I should probably update). I launch long running services through Marathon and crons with Chronos. I use haproxy for service discovery and load balancing. It's mostly used for data processing, but does serve data to a production web environment (~40k req / day).<p>The things I like the most about mesos is that it is light weight and removes a like of the friction in deploying new services. So I can test out a new idea without a big investment or f*ing around with the giant monolith. I found container based approaches too resource intensive for my budget.
I assume the topic is Docker orchestration to automatically start/stop/restart/kill/roll upgrade/canary/bluegreen the servers.<p>If you are on AWS, use auto scaling groups. It achieves more than these software, it works and it's stable. (Bonus: you don't need docker at all).<p>If you are on GCE, use Google Container Engine (i.e. their kubernetes). That's the only [sane] way to have kubernetes running in production.<p>I'm planning a blog post about all that later.
This link might help you to decide which container orchestrator/scheduler to use:<p><a href="https://twitter.com/nivertech/status/777556214767124481" rel="nofollow">https://twitter.com/nivertech/status/777556214767124481</a>