Docker Compose vs Kubernetes

Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Docker Compose
Docker Compose

5.1K
3.5K
+ 1
446
Kubernetes
Kubernetes

8.1K
6.5K
+ 1
543
Add tool

Docker Compose vs Kubernetes: What are the differences?

What is Docker Compose? Define and run multi-container applications with Docker. With Compose, you define a multi-container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running.

What is Kubernetes? Manage a cluster of Linux containers as a single system to accelerate Dev and simplify Ops. Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.

Docker Compose and Kubernetes can be categorized as "Container" tools.

"Multi-container descriptor", "Fast development environment setup" and "Easy linking of containers" are the key factors why developers consider Docker Compose; whereas "Leading docker container management solution", "Simple and powerful" and "Open source" are the primary reasons why Kubernetes is favored.

Docker Compose and Kubernetes are both open source tools. It seems that Kubernetes with 55K GitHub stars and 19.1K forks on GitHub has more adoption than Docker Compose with 16.6K GitHub stars and 2.56K GitHub forks.

Google, Slack, and Shopify are some of the popular companies that use Kubernetes, whereas Docker Compose is used by StackShare, CircleCI, and Docker. Kubernetes has a broader approval, being mentioned in 1046 company stacks & 1096 developers stacks; compared to Docker Compose, which is listed in 795 company stacks and 625 developer stacks.

What is Docker Compose?

With Compose, you define a multi-container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running.

What is Kubernetes?

Kubernetes is an open source orchestration system for Docker containers. It handles scheduling onto nodes in a compute cluster and actively manages workloads to ensure that their state matches the users declared intentions.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Docker Compose?
Why do developers choose Kubernetes?

Sign up to add, upvote and see more prosMake informed product decisions

Jobs that mention Docker Compose and Kubernetes as a desired skillset
What companies use Docker Compose?
What companies use Kubernetes?

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Docker Compose?
What tools integrate with Kubernetes?

Sign up to get full access to all the tool integrationsMake informed product decisions

What are some alternatives to Docker Compose and Kubernetes?
Docker
The Docker Platform is the industry-leading container platform for continuous, high-velocity innovation, enabling organizations to seamlessly build and share any application — from legacy to what comes next — and securely run them anywhere
Docker Swarm
Swarm serves the standard Docker API, so any tool which already communicates with a Docker daemon can use Swarm to transparently scale to multiple hosts: Dokku, Compose, Krane, Deis, DockerUI, Shipyard, Drone, Jenkins... and, of course, the Docker client itself.
Helm
Helm is the best way to find, share, and use software built for Kubernetes.
Ansible
Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates. Ansible’s goals are foremost those of simplicity and maximum ease of use.
Rancher
Rancher is an open source container management platform that includes full distributions of Kubernetes, Apache Mesos and Docker Swarm, and makes it simple to operate container clusters on any cloud or infrastructure platform.
See all alternatives
Decisions about Docker Compose and Kubernetes
Yshay Yaacobi
Yshay Yaacobi
Software Engineer · | 28 upvotes · 373.1K views
atSolutoSoluto
Docker Swarm
Docker Swarm
.NET
.NET
F#
F#
C#
C#
JavaScript
JavaScript
TypeScript
TypeScript
Go
Go
Visual Studio Code
Visual Studio Code
Kubernetes
Kubernetes

Our first experience with .NET core was when we developed our OSS feature management platform - Tweek (https://github.com/soluto/tweek). We wanted to create a solution that is able to run anywhere (super important for OSS), has excellent performance characteristics and can fit in a multi-container architecture. We decided to implement our rule engine processor in F# , our main service was implemented in C# and other components were built using JavaScript / TypeScript and Go.

Visual Studio Code worked really well for us as well, it worked well with all our polyglot services and the .Net core integration had great cross-platform developer experience (to be fair, F# was a bit trickier) - actually, each of our team members used a different OS (Ubuntu, macos, windows). Our production deployment ran for a time on Docker Swarm until we've decided to adopt Kubernetes with almost seamless migration process.

After our positive experience of running .Net core workloads in containers and developing Tweek's .Net services on non-windows machines, C# had gained back some of its popularity (originally lost to Node.js), and other teams have been using it for developing microservices, k8s sidecars (like https://github.com/Soluto/airbag), cli tools, serverless functions and other projects...

See more
Sebastian Gębski
Sebastian Gębski
CTO at Shedul/Fresha · | 6 upvotes · 62.1K views
atFresha EngineeringFresha Engineering
Docker
Docker
Docker Compose
Docker Compose
Kubernetes
Kubernetes
Terraform
Terraform
Ansible
Ansible
Amazon EC2
Amazon EC2
Amazon EKS
Amazon EKS
Amazon S3
Amazon S3
Amazon RDS
Amazon RDS

Heroku was a decent choice to start a business, but at some point our platform was too big, too complex & too heterogenic, so Heroku started to be a constraint, not a benefit. First, we've started containerizing our apps with Docker to eliminate "works in my machine" syndrome & uniformize the environment setup. The first orchestration was composed with Docker Compose , but at some point it made sense to move it to Kubernetes. Fortunately, we've made a very good technical decision when starting our work with containers - all the container configuration & provisions HAD (since the beginning) to be done in code (Infrastructure as Code) - we've used Terraform & Ansible for that (correspondingly). This general trend of containerisation was accompanied by another, parallel & equally big project: migrating environments from Heroku to AWS: using Amazon EC2 , Amazon EKS, Amazon S3 & Amazon RDS.

See more
Emanuel Evans
Emanuel Evans
Senior Architect at Rainforest QA · | 12 upvotes · 165.3K views
atRainforest QARainforest QA
Heroku
Heroku
Kubernetes
Kubernetes
Google Kubernetes Engine
Google Kubernetes Engine
Google Cloud SQL for PostgreSQL
Google Cloud SQL for PostgreSQL
PostgreSQL
PostgreSQL
Google Cloud Memorystore
Google Cloud Memorystore
Redis
Redis
CircleCI
CircleCI
Google Cloud Build
Google Cloud Build
Helm
Helm
Terraform
Terraform

We recently moved our main applications from Heroku to Kubernetes . The 3 main driving factors behind the switch were scalability (database size limits), security (the inability to set up PostgreSQL instances in private networks), and costs (GCP is cheaper for raw computing resources).

We prefer using managed services, so we are using Google Kubernetes Engine with Google Cloud SQL for PostgreSQL for our PostgreSQL databases and Google Cloud Memorystore for Redis . For our CI/CD pipeline, we are using CircleCI and Google Cloud Build to deploy applications managed with Helm . The new infrastructure is managed with Terraform .

Read the blog post to go more in depth.

See more