The container journey for most organisations in 2020 follows a predictable path: Docker adoption, Docker Compose for local development, then the question of production orchestration. The answer in 2020 is Kubernetes.

The Docker adoption curve

Docker adoption for development began in earnest around 2016 and is now ubiquitous for new projects. The immediate benefits: reproducible development environments (no 'works on my machine'), lightweight dependencies (Redis, PostgreSQL, and RabbitMQ as Docker containers rather than local installations), and a clear path from development to production. Teams that adopted Docker even for development only reduced environment setup time by an order of magnitude.

Docker Compose for local multi-service

Docker Compose is the right tool for local multi-service development: define all services, their network connections, and volume mounts in a docker-compose.yml, and run the full stack with docker-compose up. The Compose file serves as documentation of service dependencies and configuration. The pattern breaks down for production: Compose does not provide health-based scheduling, automatic restarts, or horizontal scaling.

The Kubernetes decision

Kubernetes adoption was initially driven by organisations with large-scale container workloads (enough containers that manual placement and Docker Compose orchestration was clearly insufficient). The managed Kubernetes services (AKS, EKS, GKE) made Kubernetes accessible to organisations without dedicated platform engineering teams. In 2020 the question is not whether Kubernetes is the right production container orchestrator, it is, but how much operational investment is appropriate for the scale of the workload.

The Helm package manager

Helm templating and chart packaging became the standard Kubernetes application packaging format through 2019-2020. The Helm chart provides a parameterised, versioned Kubernetes application package. ArtifactHub (the CNCF chart repository) provides public charts for common infrastructure components. The operational concern with Helm: Tiller (removed in Helm 3) and the risk of chart upgrades changing resources unexpectedly. Helm 3 (released November 2019) addressed most of the Helm 2 operational concerns.