Docker운영과 디버깅

restart policy 기본

컨테이너 재시작 정책을 통해 장애 후 동작을 어느 수준까지 자동화할 수 있는지 정리합니다.

마지막 수정 2026년 3월 21일

기본 패턴

bash
docker run -d --restart unless-stopped my-app

설명

  • restart policy는 컨테이너가 종료됐을 때 Docker가 어떤 조건에서 다시 올릴지 정하는 규칙입니다.
  • 개발 중에는 수동 제어가 편할 수 있지만, 장시간 떠 있어야 하는 서비스라면 alwaysunless-stopped 같은 정책이 운영 안정성을 높여 줍니다.
  • on-failure는 비정상 종료 코드일 때만 재시작하므로, 배치 작업이나 실패 재시도 성격이 있는 작업에 더 잘 맞습니다.
  • 이 기능은 "프로세스가 죽었을 때 다시 띄우기" 수준이지, 애플리케이션 자체의 health 상태를 완전히 보장하는 것은 아닙니다.
  • 그래서 restart policy만 믿기보다 healthcheck, 로그 수집, 외부 모니터링을 함께 두는 편이 좋습니다.

짧은 예제

yaml
services:
  app:
    image: my-app
    restart: unless-stopped

빠른 정리

정책의미
no자동 재시작 안 함
on-failure실패 종료 시 재시작
always항상 재시작 시도
unless-stopped명시적으로 멈추기 전까지 재시작

주의할 점

restart policy는 장애를 "숨기는" 도구가 아니라, 복구를 자동화하는 최소 장치입니다. 무한 재시작 루프가 돌 수 있으니, 로그와 health 상태를 함께 관찰해야 실제 원인을 놓치지 않습니다.

참고 링크

2 sources