I’m wondering how people manage Docker in production. I am a bit confused about what option suits what use case best. So far the options I’ve seen are:
Use Kubernetes (either directly or through a managed service like Google Container Engine)
Use Mesosphere DCOS
Use Swarm (either directly or through a managed service like Docker Cloud)
Use AWS Container Service
Do it yourself, e.g. with system init files that execute ‘docker run’ and then hooking up some monitoring tool.
What do you use, and why? If you use a do-it-yourself solution, what is your solution? How do you like your option so far?
We currently use Docker for AWS - https://docs.docker.com/docker-for-aws/#docker-community-edition-ce-for-aws
Basically it is a cloudformation template that you deploy into AWS and it configures the entire stack for you - deploying your managers and worker nodes across a multi-AZ VPC. It works really well. Once up and running, we just point our CI server (Jenkins) at it and perform daily deployments. I ran into an issue early on where the Elastic Load Balancer reverts back to a ‘default’ configuration after every deployment (we throw away our containers on every build rather than doing a rolling update) which overrode my static entries in the ELB. I was able to work around this by adding a small script to my builds that updates the ELB via aws cli calls. There is still work that needs to be done in terms of the auto scaling group being able to automatically add and remove worker nodes based on aggregate container metrics but from what I understand this is currently being worked on.