/엔지니어/Docker / 컨테이너/실행 중인 컨테이너 디버깅 — docker exec
Docker / 컨테이너중급UbuntuDebianCentOSdocker디버깅컨테이너

실행 중인 컨테이너 디버깅 — docker exec, logs, inspect

컨테이너가 예상대로 동작하지 않을 때 사용하는 디버깅 명령어와 패턴을 정리합니다.

컨테이너 상태 확인

Bash
# 실행 중인 컨테이너
docker ps

# 종료된 컨테이너 포함
docker ps -a

# 리소스 사용량 실시간 모니터링
docker stats

# 특정 컨테이너만
docker stats my_app

로그 확인

Bash
# 전체 로그
docker logs my_app

# 마지막 100줄
docker logs --tail 100 my_app

# 실시간 스트림
docker logs -f my_app

# 타임스탬프 포함
docker logs -t my_app

# 특정 시간 이후 로그
docker logs --since "2024-01-15T10:00:00" my_app

컨테이너 내부 접속

Bash
# 셸 접속 (bash 없으면 sh 사용)
docker exec -it my_app bash
docker exec -it my_app sh

# 단일 명령 실행
docker exec my_app cat /etc/nginx/nginx.conf

# 루트로 접속 (권한 문제 디버깅)
docker exec -u root -it my_app bash

# 환경변수 확인
docker exec my_app env

inspect로 상세 정보 조회

Bash
# 전체 정보 (JSON)
docker inspect my_app

# 특정 필드만 추출
docker inspect -f '{{.State.Status}}' my_app
docker inspect -f '{{.NetworkSettings.IPAddress}}' my_app
docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{"
"}}{{end}}' my_app

# 환경변수 목록
docker inspect -f '{{range .Config.Env}}{{.}}{{"
"}}{{end}}' my_app

컨테이너가 즉시 종료될 때

Bash
# 종료 코드 확인
docker inspect my_app | grep -A5 '"State"'

# 크래시 루프 컨테이너 로그 보기
docker logs my_app 2>&1 | tail -50

# entrypoint 오버라이드로 셸 진입
docker run -it --entrypoint sh my_image:latest

# 종료된 컨테이너에서 파일 복사
docker cp dead_container:/app/error.log ./error.log

네트워크 디버깅

Bash
# 컨테이너 네트워크 목록
docker network ls

# 네트워크 상세 (어떤 컨테이너가 연결됐는지)
docker network inspect bridge

# 컨테이너에서 다른 컨테이너로 ping (컨테이너명 사용)
docker exec my_app ping db

# DNS 해석 확인
docker exec my_app nslookup db

# 포트 리스닝 확인
docker exec my_app ss -tlnp

이미지 레이어 분석

Bash
# 레이어별 크기 확인
docker history my_image:latest

# 상세 레이어 정보
docker history --no-trunc my_image:latest
#docker#디버깅#컨테이너#logs#inspect
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

관련 공식 문서Docker 공식 문서

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.