Docker 컨테이너를 운영하다 보면 현재 어떤 프로세스가 실행되고 있는지 확인해야 하는 상황이 자주 발생합니다. 애플리케이션이 정상적으로 실행되고 있는지 확인하거나, CPU를 많이 사용하는 프로세스를 분석하거나, 장애 원인을 찾기 위해 내부 프로세스를 점검하는 경우가 대표적입니다.
이럴 때 사용하는 명령어가 바로 docker top입니다.
Docker Top은 실행 중인 컨테이너 내부의 프로세스(Process)를 확인하는 명령어입니다. Linux의 ps 명령과 비슷한 역할을 하며, 컨테이너 안에서 어떤 프로그램이 실행 중인지 빠르게 확인할 수 있습니다.
이번 글에서는 Docker Top의 개념부터 기본 사용법, 주요 옵션, 출력 결과 해석, 실무 활용 사례까지 자세히 알아보겠습니다.
Docker Top이란 무엇인가?
Docker Top은 실행 중인 컨테이너 내부의 프로세스 목록을 출력하는 명령어입니다.
컨테이너 안에서 실행 중인 프로그램과 PID, 사용자, 실행 명령 등을 확인할 수 있습니다.
애플리케이션이 정상적으로 실행 중인지 확인하거나 비정상적인 프로세스를 분석할 때 자주 사용합니다.
Docker Top은 언제 사용하는가?
다음과 같은 상황에서 많이 사용됩니다.
- 실행 중인 프로세스 확인
- 장애 원인 분석
- CPU 사용 프로세스 확인
- 컨테이너 내부 상태 점검
- 애플리케이션 실행 여부 확인
- 프로세스 디버깅
운영 서버에서 장애를 분석할 때 매우 유용한 명령어입니다.
Docker Top 기본 사용법
기본 명령어는 다음과 같습니다.
docker top <컨테이너명>
예를 들어 web-server 컨테이너를 확인하려면 다음과 같이 실행합니다.
docker top web-server
출력 예시는 다음과 같습니다.
UID PID PPID C STIME TTY TIME CMD
root 2143 2120 0 10:23 ? 00:00:00 nginx: master process
101 2181 2143 0 10:23 ? 00:00:00 nginx: worker process
현재 실행 중인 모든 프로세스를 확인할 수 있습니다.
Docker Top 출력 항목 설명
기본 출력에는 다음과 같은 정보가 포함됩니다.
| 항목 | 설명 |
|---|---|
| UID | 실행 사용자 |
| PID | 프로세스 ID |
| PPID | 부모 프로세스 ID |
| C | CPU 사용률 |
| STIME | 시작 시간 |
| TTY | 터미널 |
| TIME | CPU 사용 시간 |
| CMD | 실행 명령 |
프로세스 상태를 분석할 때 중요한 정보들입니다.
ps 옵션 함께 사용하기
Docker Top은 Linux의 ps 옵션도 함께 사용할 수 있습니다.
예를 들어 자세한 정보를 보려면 다음과 같이 실행합니다.
docker top web-server aux
또는 다음과 같이 사용할 수도 있습니다.
docker top web-server -ef
Linux에서 사용하던 ps 옵션을 그대로 활용할 수 있어 익숙하게 사용할 수 있습니다.
웹 서버 프로세스 확인
Nginx 컨테이너의 실행 상태를 확인합니다.
docker top nginx
Master Process와 Worker Process가 모두 실행되고 있다면 정상적으로 동작하고 있는 것입니다.
데이터베이스 프로세스 확인
MySQL 컨테이너도 동일하게 확인할 수 있습니다.
docker top mysql
데이터베이스 프로세스가 정상적으로 실행 중인지 쉽게 확인할 수 있습니다.
Docker Top 실무 활용 예제
Docker Top은 컨테이너 내부에서 어떤 프로세스가 실행되고 있는지 빠르게 확인할 수 있어 장애 분석과 운영 환경에서 매우 자주 사용하는 명령어입니다. Docker Exec으로 컨테이너에 직접 접속하지 않아도 프로세스 상태를 확인할 수 있다는 장점이 있습니다.
웹 서버 프로세스 확인
Nginx 컨테이너에서 실행 중인 프로세스를 확인합니다.
docker top nginx
출력 예시입니다.
UID PID PPID CMD
root 1452 1438 nginx: master process
101 1475 1452 nginx: worker process
Master Process와 Worker Process가 모두 실행 중이라면 정상적으로 동작하고 있는 상태입니다.
MySQL 프로세스 확인
데이터베이스 컨테이너도 동일하게 확인할 수 있습니다.
docker top mysql
MySQL 서버 프로세스가 실행되고 있는지 쉽게 확인할 수 있습니다.
Redis 프로세스 확인
Redis 서버의 실행 상태를 확인하는 예제입니다.
docker top redis
Redis 프로세스가 하나만 실행되고 있다면 일반적인 정상 상태입니다.
ps 옵션 활용
Linux의 ps 옵션을 함께 사용할 수 있습니다.
docker top web-server -ef
또는 다음과 같이 실행할 수도 있습니다.
docker top web-server aux
더 자세한 프로세스 정보를 확인할 수 있습니다.
Linux 서버 문제 해결
운영 중인 웹 서버에서 CPU 사용률은 정상인데 응답 속도가 매우 느려지는 문제가 발생했습니다.
먼저 현재 리소스 사용량을 확인했습니다.
docker stats
CPU와 메모리는 정상 수준이었습니다.
다음으로 컨테이너 내부 프로세스를 확인했습니다.
docker top web-server
확인 결과 기존 Worker Process 외에 비정상적인 프로세스가 추가로 실행되고 있었습니다.
실행 중인 명령을 확인하여 원인을 분석했고, 잘못 실행된 백그라운드 프로세스를 제거한 뒤 컨테이너를 재시작했습니다.
docker restart web-server
재확인 결과 정상적인 프로세스만 실행되고 있었으며 서비스도 정상적으로 복구되었습니다.
Docker Top 사용 시 주의사항
Docker Top을 사용할 때는 다음 사항을 알아두는 것이 좋습니다.
첫 번째는 실행 중인 컨테이너에서만 사용할 수 있다는 점입니다.
중지된 컨테이너에서는 프로세스를 확인할 수 없습니다.
두 번째는 Docker Top은 프로세스 목록만 보여줍니다.
CPU나 메모리 사용량은 Docker Stats를 함께 확인하는 것이 좋습니다.
세 번째는 Linux 배포판이나 이미지에 따라 출력 형식이 약간 다를 수 있습니다.
하지만 기본적인 PID와 CMD 정보는 대부분 동일하게 제공됩니다.
네 번째는 자세한 내부 분석이 필요한 경우 Docker Exec을 이용해 컨테이너 내부에서 ps 명령을 직접 실행하는 것도 좋은 방법입니다.
Best Practice
Docker Top을 사용할 때는 다음과 같은 방법을 추천합니다.
- 장애 발생 시 Docker Stats와 함께 확인합니다.
- 비정상적인 프로세스가 있는지 점검합니다.
- 필요한 경우
-ef,aux옵션을 활용합니다. - 프로세스 확인 후 Docker Logs로 원인을 분석합니다.
- 반복적으로 동일한 프로세스 문제가 발생하면 애플리케이션을 점검합니다.
- 운영 환경에서는 정기적으로 주요 서비스의 프로세스를 확인합니다.
이러한 방법을 적용하면 컨테이너 내부 상태를 빠르게 파악하고 장애를 효율적으로 분석할 수 있습니다.
자주 묻는 질문
Docker Top과 Docker Stats의 차이는 무엇인가요?
Docker Top은 실행 중인 프로세스를 확인합니다.
Docker Stats는 CPU, 메모리, 네트워크 등의 리소스 사용량을 확인합니다.
Docker Top은 종료된 컨테이너도 확인할 수 있나요?
아닙니다.
실행 중인 컨테이너에서만 사용할 수 있습니다.
Docker Exec 없이도 프로세스를 확인할 수 있나요?
네.
Docker Top만으로도 대부분의 프로세스 정보를 확인할 수 있습니다.
출력 결과가 Linux ps 명령과 다른 이유는 무엇인가요?
Docker Top은 컨테이너 환경에서 실행되므로 이미지와 운영체제에 따라 출력 형식이 조금 달라질 수 있습니다.
마무리
Docker Top은 실행 중인 컨테이너 내부의 프로세스를 빠르게 확인할 수 있는 매우 유용한 명령어입니다.
애플리케이션 실행 여부 확인, 장애 분석, 비정상적인 프로세스 점검 등 다양한 운영 상황에서 활용되며 Docker Stats, Docker Logs, Docker Exec와 함께 사용하면 더욱 효과적으로 문제를 해결할 수 있습니다.
컨테이너 내부 상태를 신속하게 확인해야 하는 운영 환경이라면 반드시 익혀두어야 하는 Docker 명령어 중 하나입니다.