기본 패턴
bash
docker run -d --restart unless-stopped my-app설명
- restart policy는 컨테이너가 종료됐을 때 Docker가 어떤 조건에서 다시 올릴지 정하는 규칙입니다.
- 개발 중에는 수동 제어가 편할 수 있지만, 장시간 떠 있어야 하는 서비스라면
always나unless-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