HiveBrain v1.2.0
Get Started
← Back to all entries
patterndockerMinor

Where may I need Docker Compose as Kubernetes won the container orchestration war?

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
orchestrationthemaycontainerneeddockerkuberneteswherewarcompose

Problem

I found Docker Compose just release 1.28 on 2021-1-20 but as Kubernetes won the container orchestration war I am not sure where and why I may still need Docker Compose, under with case Docker Compose is a better option?

I have a web app that consists of a php docker, a nodejs docker, a nginx docker. We host it at aliyun cloud service. In 2018 aliyun used docker swarm so we used docker compose but in 2020 we had switched k8s so I was wondering if it is still worth to learn docker compose ?

--- update ----

I found these articles were helpful

  • Why do I need Compose if I already have Kubernetes? a docker blog published in 2018



  • Docker Swarm vs. Kubernetes for Single-Host Implementations



  • https://stackoverflow.com/questions/47536536/whats-the-difference-between-docker-compose-and-kubernetes an answer is what I do currently:



If you are networking containers within the same host go for docker
compose.

If you are networking containers across multiple hosts go for
kubernetes.

And that is what docker compose document said https://docs.docker.com/compose/#common-use-cases

Solution

Docker compose is still a comparatively easy and light-weight tool to run multiple docker containers with service discovery.

Kubernetes is a metaphorical elephant. Great if you need to smash Roman lines and win the battle, but overkill for a minor skirmish, and definitely more trouble than it's worth if you're trying to fight a small battle in the mountains.

If you have a fairly large app with multiple microservices, then Kubernetes is worth every penny.

But when you're trying to run just a couple of containers, especially if it's only on a single host (i.e. your frontend + backend and maybe a local instance of RabbitMQ), docker-compose is a much simpler/faster way to orchestrate it. Kubernetes is like using a cannon to kill a mosquito when a flyswatter will do.

Example use cases where docker-compose works just fine:

  • Local development environments running on your machine. Even if you run Kubernetes in production, there's likely a lot of orchestration around getting it to work which would make it too complex for a single machine.



  • Simple apps without a lot of components



  • Single tenant apps which run on a single host



  • Deploying docker-based apps on bare VMs or physical hosts

Context

StackExchange DevOps Q#13229, answer score: 4

Revisions (0)

No revisions yet.