Haru Utils

CONTAINER

Docker 컨테이너가 계속 재시작될 때

상태·종료 코드·OOM 여부·로그·리소스와 restart policy를 확인해 재시작 루프의 원인을 찾습니다.
Docker restarting컨테이너 재시작OOMKilleddocker logsExitCode
환경Docker Engine
분류컨테이너
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • Restarting 반복
  • 서비스 간헐 중단
  • 컨테이너 로그 반복

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

Exited 코드가 0인 경우

장기 실행 프로세스가 아니라 작업형 명령이 정상 종료됐는데 restart policy가 다시 실행하는 구성인지 확인합니다.

02

137 또는 OOMKilled인 경우

SIGKILL과 메모리 제한 가능성을 확인하고 호스트 OOM 기록과 컨테이너 리소스 제한을 함께 비교합니다.

03

unhealthy만 표시되는 경우

healthcheck 실패와 프로세스 종료는 다른 상태입니다. healthcheck 명령과 애플리케이션 응답을 직접 확인합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

재시작 컨테이너 확인

이름과 최근 상태를 먼저 확인합니다.

전체 컨테이너 상태
docker ps -a
재시작 중인 컨테이너
docker ps -a --filter status=restarting
결과 읽기

STATUS의 종료 후 경과 시간과 반복 주기를 기록합니다.

다음 판단

대상 CONTAINER_NAME을 다음 단계에 사용합니다.

2
조회시스템을 변경하지 않는 확인 단계

종료 코드와 OOM 여부 확인

컨테이너 상태를 한 줄로 확인합니다.

핵심 종료 정보
docker inspect --format '{{.State.Status}} Exit={{.State.ExitCode}} OOM={{.State.OOMKilled}} Error={{.State.Error}}' CONTAINER_NAME
결과 읽기

OOM=true면 메모리 가이드로, ExitCode가 있으면 애플리케이션 종료 원인을 조사합니다.

다음 판단

restart policy가 오류를 가리고 있을 수 있습니다.

3
조회시스템을 변경하지 않는 확인 단계

재시작 직전 로그 확인

전체 로그 대신 최근 200줄부터 봅니다.

최근 로그
docker logs --tail 200 --timestamps CONTAINER_NAME
restart policy
docker inspect --format '{{json .HostConfig.RestartPolicy}}' CONTAINER_NAME
결과 읽기

첫 번째 치명 오류와 종료 시각을 찾습니다.

다음 판단

설정·환경변수·의존 서비스 오류를 구분합니다.

4
조회시스템을 변경하지 않는 확인 단계

리소스와 디스크 확인

호스트 자원 부족이 컨테이너 오류처럼 보일 수 있습니다.

현재 자원 사용
docker stats --no-stream
Docker 디스크 사용량
docker system df
호스트 디스크
df -hT
결과 읽기

메모리 제한, 디스크 Full, 로그 폭증 여부를 확인합니다.

다음 판단

prune은 이 단계에서 실행하지 않습니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

원인 수정 후 한 번만 재시작

설정과 의존 서비스가 준비됐는지 확인한 뒤 실행합니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
컨테이너 재시작
docker restart CONTAINER_NAME
상태와 새 로그
docker ps --filter name=CONTAINER_NAME && docker logs --tail 50 CONTAINER_NAME
결과 읽기

Up 상태가 유지되고 같은 오류가 반복되지 않아야 합니다.

다음 판단

다시 루프에 들어가면 반복 재시작하지 말고 2단계로 돌아갑니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기