본문 바로가기

Program

docker container top 명령어 완전 정복 – 컨테이너 내부 프로세스 확인하기

반응형

🐳 docker container top 명령어 완전 정복 – 컨테이너 내부 프로세스 확인하기

도커(Docker)는 컨테이너라는 가상 환경에서 애플리케이션을 격리하여 실행하는 도구입니다. 그런데, 컨테이너 내부에서 어떤 프로세스가 실행되고 있는지 실시간으로 확인하고 싶다면 어떻게 해야 할까요?

바로 이럴 때 사용하는 명령어가 docker container top입니다. 마치 리눅스의 top이나 ps 명령어처럼, 도커 컨테이너 내부의 프로세스 정보를 확인할 수 있게 해주는 강력한 도구입니다.


✅ 기본 개념

docker container top [OPTIONS] CONTAINER [ps OPTIONS]
  • CONTAINER: 프로세스를 조회할 컨테이너의 이름 또는 ID입니다.
  • [ps OPTIONS]: 리눅스의 ps 명령어에서 사용하는 옵션을 전달하여 출력 형식을 조절할 수 있습니다.

docker top은 docker container top의 축약형으로 동일하게 작동합니다.


🧪 예제 중심으로 배우기

📌 1. 실행 중인 컨테이너 내부 프로세스 보기

docker container top my_container

컨테이너 my_container에서 실행 중인 프로세스를 확인할 수 있습니다. 출력 예시는 다음과 같습니다:

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                9371                9336                0                   12:01               ?                   00:00:00            nginx: master process nginx -g daemon off;
www-data            9393                9371                0                   12:01               ?                   00:00:00            nginx: worker process

위 출력에서 확인할 수 있는 항목:

항목 설명

UID 사용자 ID (프로세스를 실행한 사용자)
PID 프로세스 ID
PPID 부모 프로세스 ID
CMD 실행된 명령어
STIME 시작 시간
TIME CPU 사용 시간
TTY 터미널 정보

📌 2. 컨테이너에 커스텀 ps 옵션 적용하기

기본 출력 형식이 만족스럽지 않을 때는 ps 명령어 옵션을 추가할 수 있습니다.

예: -eo pid,cmd (PID와 실행 명령만 보기)

docker container top my_container -eo pid,cmd

이 명령은 다음처럼 간단한 출력 결과를 제공합니다:

PID                 CMD
9371                nginx: master process nginx -g daemon off;
9393                nginx: worker process

📌 3. 여러 개의 컨테이너를 각각 확인하려면?

하나씩 반복적으로 입력해야 합니다. 예를 들어:

docker container top web_container
docker container top db_container

혹은 Bash 스크립트로 자동화할 수 있습니다:

for c in $(docker ps -q); do
  echo "컨테이너 ID: $c"
  docker top $c
done

🔎 docker exec과의 차이점은?

많은 분들이 docker exec로 내부 쉘에 접근한 뒤 ps 명령을 사용하기도 합니다. 하지만 이 방법은 번거롭고 반복적으로 수행하기 어렵습니다.

비교 항목 docker container top docker exec + ps

접근 방식 컨테이너 외부에서 직접 조회 컨테이너 내부 쉘 진입 필요
속도 빠르고 간단 상대적으로 느림
자동화 쉬움 (스크립트에 적합) 복잡

💡 실무 활용 예시

1. CPU/메모리 사용률이 급증한 컨테이너 원인 분석

컨테이너가 갑자기 과도한 리소스를 사용한다면 top 명령어로 어떤 프로세스가 문제인지 즉시 확인할 수 있습니다.

docker container top heavy_app

이후 문제 있는 프로세스 PID를 docker exec 명령어로 접근하여 로그 확인 또는 강제 종료할 수 있습니다.


2. 백그라운드에서 잘못 실행된 데몬 확인

컨테이너가 예상과 달리 CMD나 ENTRYPOINT에서 백그라운드로 데몬을 실행해 버리면, 제대로 작동하지 않을 수 있습니다. 이때 top을 통해 어떤 프로세스가 실행 중인지 명확히 파악할 수 있습니다.


🛠 관련 도구와 함께 쓰기

  • docker stats: 컨테이너 리소스 사용 현황 실시간 확인
  • docker inspect: 컨테이너 구성 정보 확인
  • docker logs: 컨테이너 로그 출력

이들과 함께 활용하면 문제 해결 속도가 매우 빨라집니다.


📌 마무리 정리

  • docker container top은 컨테이너 내부의 실행 중인 프로세스를 외부에서 확인할 수 있는 유용한 명령어입니다.
  • ps 명령어 옵션을 전달하여 출력 형식을 세밀하게 조절할 수 있습니다.
  • docker exec보다 간편하며 자동화에 적합합니다.
  • 시스템 모니터링, 오류 분석, 데몬 실행 확인 등 다양한 상황에서 활용됩니다.

 

반응형