Sobes.tech
Middle

What is the difference between Docker Compose and Docker Swarm?

sobes.tech AI

Answer from AI

Docker Compose is used for defining and managing multi-container applications within a single host or with a few hosts. It defines services, networks, and volumes in a docker-compose.yml file.

Docker Swarm is a native Docker orchestration system designed for clustering and scaling containers across multiple hosts. Swarm provides fault tolerance, distributed scheduling, and service discovery.

Feature Docker Compose Docker Swarm
Purpose Managing multiple containers on a single host Container orchestration on a cluster of hosts
Scaling Limited to one host Horizontal scaling on a cluster
Fault Tolerance Not available Built-in
Distributed Scheduling Not available Built-in
Service Discovery Not available Built-in
Configuration File docker-compose.yml docker stack deploy - uses the same format as docker-compose.yml but for orchestration

Example of a docker-compose.yml file for Compose:

# Docker Compose file
version: '3.8'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  app:
    image: my-app
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

Example of a stack deployment command in Swarm (uses the same docker-compose.yml file):

# Stack deployment command in Swarm
docker stack deploy -c docker-compose.yml my-stack