[TIL] Docker Compose,Docker Replica-2025.8.19

2025. 8. 28. 15:56대외활동/인공지능사관학교

728x90
반응형
SMALL

 

Docker Compose 

1. 핵심 개념

  • Docker Compose란?
    • 여러 개의 컨테이너(서비스)를 YAML 파일(docker-compose.yml) 로 정의하고 한 번에 실행·관리할 수 있는 도구.
    • 단일 호스트(서버) 안에서 컨테이너 환경을 일관되게 올리고 내릴 때 사용.
    • 매번 docker run 명령어로 옵션을 일일이 붙이지 않아도 되며, 선언형 방식으로 재현 가능.
  • Compose의 주요 특징
    1. 서비스 정의: services: 블록 안에서 웹, DB, 캐시 등 각 컨테이너 정의.
    2. 네트워크 관리: 컨테이너 간 통신 네트워크를 자동 생성.
    3. 볼륨 관리: 데이터의 지속성을 위해 볼륨 선언 가능.
    4. 환경 변수: .env 파일과 연동하여 설정값 관리.
    5. 일괄 관리: up, down, stop, restart 등으로 전체 컨테이너 제어.

 

2. 명령어 정리

  • 서비스 실행→ 백그라운드에서 모든 컨테이너 실행.
docker compose up -d
  • 서비스 종료→ 실행 중인 컨테이너, 네트워크, 볼륨 종료 및 제거.
docker compose down
  • 로그 확인
docker compose logs -f
  • 특정 서비스 실행/중지
docker compose stop web
docker compose start web
  • 서비스 스케일링→ web 컨테이너를 3개 실행.
docker compose up -d --scale web=3

3. 예시: docker-compose.yml

version: '3.8'
services:
    web:
    image: nginx:latest
    ports: - "80:80"
db:
     image: mysql:5.7
     environment:
         MYSQL_ROOT_PASSWORD: example
      volumes:
          - db_data:/var/lib/mysql
volumes:
    db_data:
 

→ 웹 서버(Nginx)와 데이터베이스(MySQL)를 한 번에 실행 가능.

 

4. 오늘 배운 점

  • Compose는 개발 환경에서 빠르게 멀티 컨테이너 환경을 구성할 때 매우 유용하다.
  • YAML 파일로 인프라를 코드(IaC)처럼 정의할 수 있어서, 협업 시 재현성과 일관성을 보장.
  • 단일 호스트에 국한되므로, 여러 서버 분산 관리가 필요할 때는 Docker Swarm이나 Kubernetes로 넘어가야 함.

Docker Replica 

1. Replica의 개념

  • Replica란?
    • 특정 서비스(컨테이너)를 여러 개 복제해서 실행한 인스턴스.
    • 서비스의 확장성(Scalability)고가용성(High Availability) 을 보장하기 위해 사용.
    • 즉, 컨테이너 하나가 죽어도 다른 Replica가 동일한 기능을 대신 수행할 수 있음.

 

2. Replica가 중요한 이유

  1. 부하 분산 (Load Balancing)
    • 여러 개의 Replica가 동시에 요청을 처리 → 트래픽 증가에도 안정적으로 대응 가능.
  2. 장애 대응 (Fault Tolerance)
    • 하나의 컨테이너가 죽어도 나머지 Replica들이 서비스 유지.
  3. 서비스 확장 (Scalability)
    • 필요할 때 Replica 수를 늘리거나 줄여서 탄력적으로 리소스 관리 가능.

 

3. Docker Swarm에서 Replica 사용

서비스 생성 시 --replicas 옵션으로 지정:→ nginx 컨테이너를 3개 Replica로 실행.

docker service create --name web --replicas 3 -p 80:80 nginx
  • 실행 중인 서비스 Replica 확인:
docker service ps web
  • 실행 중인 Replica 수 조정 (스케일링):→ 기존 3개에서 5개로 늘림.
docker service scale web=5

 

4. Docker Compose에서 Replica 사용

  • docker-compose.yml에서 deploy.replicas 옵션 활용 (단, Swarm 모드에서만 동작):
version:'3.8'
services:
    web:
         image:nginx:latest
         deploy:replicas:3
         update_config:parallelism:1
         delay:10s

→ web 서비스를 3개의 Replica로 배포하고, 업데이트 시 하나씩 교체.

 

5. 오늘 배운 점

  • Replica = 같은 컨테이너를 여러 개 복사 실행한 것.
  • 운영 환경에서는 Replica를 통해 무중단 서비스와 안정성 확보가 핵심.
  • docker-compose의 단순 실행에서는 scale 옵션, swarm에서는 replicas를 통해 구현 가능.
  • Kubernetes에서는 Replica를 Pod 단위로 관리 (→ Deployment의 replicas 필드).

 

👉 정리하면:

  • 단일 컨테이너 = 취약한 서비스
  • Replica 여러 개 = 안정적이고 확장 가능한 서비스
728x90
반응형
LIST