at Saltside • Manages ~350 containers in production • 2+ years of Docker experience • “Introduction to Docker” course lecturer • @adman65 • http://blog.slashdeploy.com
environment • Standardizing infrastructure in polygot teams • Containerize your build system • Deliver CLI software • Build large scale distributed systems
to model your application • Use docker-machine to play around with docker infrastructure • Use docker to test different databases say (mongo:2.8 vs mongo:3.2)
deployment target (a hosted service such as Hyper.sh, roll our own, or some orchestration tool) • Configure health checks (either in the Dockerfile or via your orchestration tool) • Integrate your target with your metric collection tools (Most tools have integrations with the docker daemon or orchestration tool) • Connect your CI system to trigger deployments
developers • [pro] increase development/production parity • [pro] gives a platform to standardize infrastructure • [con] changing rapidly; Docker Inc. making big changes • [con] increases complexity • [pro] prepares organizations for a containerized future
a development environment • Use docker-compose as much as possible • Use Google Container Engine (Hosted Kubernetes) for your production environment • Use the official images as much as possible; avoid creating your own custom base images • Prefer one Dockerfile per project • Ruthless stick to 12 Factor app principles • Bake containers into your process at all stages for the biggest benefit