본문 바로가기
코어-테크 : 트러블 슈팅 노트

Docker STATUS는 무엇을 의미할까? Running · Exited · Restarting 쉽게 이해하기

by 크리에이터 독타 (Creator Dokta) 2026. 7. 22.

 

 

※ 이 글은 운영자가 직접 Intel N100 홈서버에서 Debian과 Docker 기반 서비스를 운영하며 컨테이너 상태를 점검하고 기록한 경험을 바탕으로 작성했습니다. 글의 문장 정리와 구성에는 AI 도구의 도움을 약간 받았지만, 최종 내용은 운영자가 직접 검토하고 확인했습니다.

Docker STATUS는 무엇을 의미할까? Running · Exited · Restarting 쉽게 이해하기

도입

지난 글에서는 docker ps 명령으로 현재 실행 중인 Docker 컨테이너를 확인하는 방법을 살펴보았습니다.

하지만 화면에 컨테이너 이름이 보인다고 해서 점검이 끝나는 것은 아니었습니다.

목록에는 컨테이너가 지금 어떤 상태인지 알려주는 STATUS 정보도 함께 표시됩니다.

처음에는 Running, Exited, Restarting 같은 단어가 모두 오류처럼 보였습니다.

직접 홈서버를 운영하며 여러 상태를 반복해서 확인해 보니, STATUS는 오류 메시지라기보다 다음 점검 방향을 알려주는 첫 번째 단서에 가까웠습니다.

이번 글에서는 세 가지 대표 상태를 중심으로, 각각 무엇을 뜻하고 다음에는 무엇을 확인하면 되는지 정리해 보겠습니다.

Docker STATUS는 정답을 바로 알려주는 메시지가 아니라, 문제 확인을 어디서부터 시작할지 알려주는 첫 번째 이정표입니다.

Debian 기반 Docker 홈서버에서 Running, Exited, Restarting 상태의 의미와 각 STATUS별 다음 점검 방향을 설명하는 Docker STATUS 인포그래픽
Docker STATUS는 오류 원인을 알려주는 메시지가 아니라 다음 점검 방향을 알려주는 안내판입니다.

※ 다이어그램은 Intel N100 Debian 홈서버에서 Docker 컨테이너의 Running, Exited, Restarting 상태를 확인하는 흐름을 바탕으로 AI 도구를 활용해 제작할 예정이며, 최종 구성과 내용은 운영자가 직접 검수합니다.
출처: 디지털 장난감

본문

① STATUS는 무엇을 보여줄까?

docker ps 결과에는 컨테이너 ID, 이미지, 이름, 포트와 함께 STATUS 열이 표시됩니다.

이 열은 컨테이너가 현재 실행 중인지, 종료되었는지, 재시작을 반복하는지처럼 현재 상태를 요약해 보여줍니다.

중요한 점은 STATUS 자체가 원인을 설명해 주는 오류 메시지는 아니라는 것입니다.

예를 들어 Exited라고 표시되어도 왜 종료되었는지는 STATUS만으로 알 수 없습니다.

Restarting이라고 보여도 설정 오류인지, 데이터베이스 연결 실패인지, 환경 변수 문제인지는 로그와 설정을 추가로 확인해야 합니다.

STATUS는 현재 상태를 보여주고, 로그와 설정은 그 상태가 된 이유를 찾는 데 도움을 줍니다.

② Running은 컨테이너가 실행 중이라는 뜻

Running은 컨테이너의 주 프로세스가 현재 실행 중이라는 의미입니다.

대부분의 경우 가장 먼저 기대하는 상태이지만, Running이라는 표시만으로 서비스 전체가 정상이라고 단정할 수는 없습니다.

예를 들어 WordPress 컨테이너가 Running이어도 데이터베이스 연결이 끊겼다면 웹페이지가 열리지 않을 수 있습니다.

Jellyfin 컨테이너가 실행 중이어도 포트 연결이나 저장 경로 권한에 문제가 있으면 실제 접속은 실패할 수 있습니다.

Running은 “컨테이너 프로세스가 살아 있다”는 뜻이지, “사용자가 이용하는 서비스까지 모두 정상이다”라는 보증은 아닙니다.

따라서 Running이 보이면 먼저 실제 서비스에 접속해 보고, 접속되지 않는다면 포트와 로그를 차례로 확인하는 흐름이 좋았습니다.

③ Exited는 현재 실행되고 있지 않다는 뜻

Exited는 컨테이너가 종료되어 현재 실행 중이 아니라는 의미입니다.

종료 자체가 항상 장애를 뜻하는 것은 아닙니다.

짧은 작업을 마치고 정상 종료된 컨테이너일 수도 있고, 운영자가 직접 중지했을 수도 있습니다.

반대로 프로그램 오류나 시작 실패로 종료되었을 가능성도 있습니다.

그래서 Exited를 발견했을 때는 “고장 났다”라고 바로 결론 내리기보다, 이 컨테이너가 원래 계속 실행되어야 하는 서비스인지부터 확인해야 합니다.

  • 계속 실행되어야 하는 웹서비스나 데이터베이스인가?
  • 내가 직접 중지한 기록이 있는가?
  • 일회성 작업을 마치고 정상 종료된 컨테이너인가?
  • 최근 설정이나 이미지가 변경되었는가?

계속 실행되어야 하는 서비스가 Exited라면 다음 단계는 로그 확인입니다.

④ Restarting은 재시작을 반복하는 상태

Restarting은 컨테이너가 실행된 뒤 정상적으로 유지되지 못하고 재시작을 반복하는 상태입니다.

Docker의 재시작 정책이 적용된 컨테이너에서 주 프로세스가 종료되면 다시 시작을 시도할 수 있습니다.

하지만 같은 문제가 해결되지 않으면 시작과 종료가 계속 반복될 수 있습니다.

이때 흔히 의심해 볼 수 있는 방향은 잘못된 환경 변수, 연결 대상 서비스의 부재, 설정 파일 오류, 저장 경로 권한 문제 등입니다.

다만 STATUS만 보고 원인을 특정해서는 안 됩니다.

Restarting은 원인이 아니라 증상입니다. 실제 원인은 컨테이너 로그와 설정에서 확인해야 합니다.

⑤ STATUS별 다음 점검 순서

상태를 읽은 뒤에는 복잡하게 생각하기보다 다음 행동을 한 단계씩 이어가면 됩니다.

Running

실제 서비스 접속 확인 → 필요하면 포트와 로그 확인

Exited

원래 계속 실행되어야 하는지 확인 → 필요하면 로그 확인

Restarting

로그 확인 → 환경 변수·연결 대상·권한·설정 점검

이 흐름만 기억해도 서비스가 열리지 않을 때 무작정 서버를 재부팅하거나 Docker를 다시 설치하는 일을 줄일 수 있습니다.

⑥ STATUS가 보이지 않을 때는 전체 목록을 확인한다

docker ps는 기본적으로 실행 중인 컨테이너만 보여줍니다.

따라서 멈춘 컨테이너는 목록에 나타나지 않을 수 있습니다.

예전에 사용하던 서비스가 보이지 않는다면 다음 명령으로 종료된 컨테이너까지 함께 확인할 수 있습니다.

docker ps -a

이 명령은 실행 중인 컨테이너뿐 아니라 생성되었거나 종료된 컨테이너도 함께 보여줍니다.

화면에 없다는 이유만으로 컨테이너가 삭제되었다고 단정하지 않고, 먼저 전체 목록을 확인하는 습관이 도움이 됩니다.

⑦ 상태를 본 뒤 원인을 추측하지 않는다

STATUS를 배우는 목적은 세 단어를 외우는 데 있지 않습니다.

Running이면 실제 서비스 확인, Exited면 종료 이유 확인, Restarting이면 로그와 설정 확인처럼 다음 점검 순서를 정하는 데 있습니다.

상태만 보고 원인을 미리 단정하면 관계없는 설정을 바꾸거나 정상 컨테이너를 삭제하는 실수를 할 수 있습니다.

상태 확인 → 실제 서비스 확인 → 로그 확인 → 설정 확인의 순서로 범위를 좁혀 가는 것이 안전합니다.

운영노트

홈서버를 처음 운영할 때는 Running이라는 표시가 보이면 모든 점검이 끝났다고 생각했습니다.

하지만 컨테이너는 실행 중인데 WordPress가 열리지 않거나 Jellyfin이 응답하지 않는 상황을 겪었습니다.

반대로 Exited를 보고 큰 장애라고 생각했지만, 실제로는 제가 이전에 테스트용 컨테이너를 직접 중지한 경우도 있었습니다.

이 경험 이후 STATUS를 정답으로 보지 않고, 다음 점검을 시작하는 출발점으로 보기 시작했습니다.

먼저 상태를 확인하고, 실제 접속 여부를 살펴본 뒤, 필요한 경우에만 로그와 설정으로 넘어가니 문제를 훨씬 차분하게 좁힐 수 있었습니다.

상태를 읽는 습관은 문제를 바로 해결해 주지는 않지만, 불필요한 재설치와 설정 변경을 줄여 주었습니다.

에디터의 해석노트

Running, Exited, Restarting은 단순한 영어 단어처럼 보이지만 실제 운영에서는 서로 다른 점검 방향을 뜻합니다.

Running은 서비스 확인으로, Exited는 종료 이유 확인으로, Restarting은 로그와 설정 확인으로 이어집니다.

중요한 것은 상태 하나만 보고 결론을 내리지 않는 것입니다.

STATUS는 문제의 정답이 아니라, 다음 질문을 선택하게 해 주는 안내판입니다.

이 안내판을 읽을 수 있으면 복잡한 Docker 장애도 한 번에 해결하려 하기보다 한 단계씩 확인할 수 있습니다.

참고 링크 (References)

트러블슈팅

문제 1. Running인데 서비스에 접속되지 않는다

Running은 컨테이너 프로세스가 실행 중이라는 뜻입니다.

서비스 주소와 포트가 맞는지 확인하고, 애플리케이션 로그와 연결 대상 서비스 상태를 추가로 살펴봅니다.

문제 2. 필요한 컨테이너가 목록에 보이지 않는다

docker ps에는 실행 중인 컨테이너만 표시됩니다.

docker ps -a

전체 목록에서 Exited 또는 Created 상태로 남아 있는지 확인합니다.

문제 3. Exited가 표시되면 바로 시작해도 될까?

먼저 해당 컨테이너가 계속 실행되어야 하는 서비스인지 확인합니다.

시작 실패나 오류 종료가 의심되면 무작정 반복 실행하기보다 로그를 먼저 확인합니다.

문제 4. Restarting이 계속 반복된다

재시작 자체를 원인으로 보지 않고, 컨테이너 로그에서 종료 직전 메시지를 확인합니다.

환경 변수, 데이터베이스나 네트워크 연결, 저장 경로 권한, 설정 파일을 차례로 점검합니다.

문제 5. STATUS만 보고 원인을 판단하기 어렵다

정상입니다. STATUS는 현재 상태만 보여주므로 원인을 찾으려면 로그와 설정을 추가로 확인해야 합니다.

다음 글에서는 docker logs를 사용해 컨테이너 내부 메시지를 확인하는 방법을 살펴봅니다.

STATUS 의미 다음 점검 방향
Running 컨테이너 프로세스 실행 중 실제 서비스 접속, 포트, 로그 확인
Exited 컨테이너가 종료되어 실행 중이 아님 운영 목적과 종료 이유 확인
Restarting 종료 후 재시작을 반복하는 상태 로그, 환경 변수, 연결, 권한, 설정 확인
목록에 없음 실행 중이 아니어서 기본 목록에서 제외되었을 수 있음 docker ps -a로 전체 목록 확인

핵심 체크포인트 10

  1. STATUS는 컨테이너의 현재 상태를 요약해서 보여준다.
  2. STATUS는 오류 원인 자체를 설명하는 메시지가 아니다.
  3. Running은 컨테이너 프로세스가 실행 중이라는 의미다.
  4. Running이어도 실제 서비스는 정상적으로 응답하지 않을 수 있다.
  5. Exited는 컨테이너가 현재 실행 중이 아니라는 뜻이다.
  6. Exited는 정상 종료, 사용자 중지, 오류 종료 등 여러 이유로 나타날 수 있다.
  7. Restarting은 컨테이너가 재시작을 반복하고 있는 상태다.
  8. Restarting은 원인이 아니라 로그와 설정을 확인해야 하는 증상이다.
  9. 멈춘 컨테이너가 보이지 않으면 docker ps -a로 전체 목록을 확인한다.
  10. STATUS를 확인한 뒤 실제 서비스, 로그, 설정의 순서로 점검 범위를 좁힌다.

마무리

이번 글에서는 Docker 컨테이너 목록에 표시되는 Running, Exited, Restarting 상태를 살펴보았습니다.

Running은 컨테이너 프로세스가 실행 중이라는 뜻이지만, 실제 서비스 정상 여부까지 보장하지는 않습니다.

Exited는 현재 실행 중이 아니라는 뜻이며, 종료 이유는 별도로 확인해야 합니다.

Restarting은 컨테이너가 재시작을 반복하는 상태로, 로그와 설정을 살펴봐야 한다는 신호입니다.

중요한 것은 상태를 외우는 것이 아니라 상태에 맞는 다음 점검 순서를 연결하는 것입니다.

Docker STATUS를 읽는다는 것은 오류를 단번에 맞히는 일이 아니라, 확인할 범위를 한 단계씩 좁혀 가는 운영 습관을 만드는 일입니다.

다음 글에서는 STATUS에서 한 단계 더 들어가 docker logs로 컨테이너 내부 메시지를 확인하는 방법을 정리해 보겠습니다.