[Docker] Docker 컨테이너 생성과 삭제 이력 추적하는 방법

2025. 4. 26. 22:33·개발 (Development)/Docker

업무 중 컨테이너가 갑자기 사라진 상황을 겪었다. 그래서 Docker 컨테이너의 생성 및 삭제 이력을 확인할 수 있는 방법을 찾아야 했다. 이 과정을 정리해본다.

1. Docker 기본 명령어 한계

처음에는 docker ps -a 명령어를 사용해봤다. 이 명령어로는 종료된 컨테이너까지는 확인할 수 있었지만, docker rm 명령어로 삭제된 컨테이너는 이력조차 남지 않는다는 사실을 알게 되었다.

2. 시스템 로그(journalctl)로 확인

Docker 데몬이 남긴 시스템 로그를 확인하면 컨테이너 생성과 삭제 흔적을 찾을 수 있었다.

journalctl -u docker.service

추가로 grep을 사용해서 컨테이너 관련 로그만 필터링했다.

journalctl -u docker.service | grep 'container'

3. auditd로 명령어 추적

시스템에 auditd가 설치되어 있었다면 docker 명령 자체를 추적할 수 있었다.

ausearch -x docker

이를 통해 누군가 docker rm 명령어를 썼는지도 확인할 수 있다.

4. /var/lib/docker/containers 디렉토리 살펴보기

삭제되었더라도 /var/lib/docker/containers 디렉토리에 컨테이너의 로그 파일이 남아있을 수도 있었다.

ls /var/lib/docker/containers/*/*-json.log

다만 이 방법은 완벽하지 않다. 컨테이너가 삭제되면서 로그 파일도 함께 사라질 수 있기 때문이다.

5. docker events로 이력 조회

가장 유용했던 방법은 docker events 명령어를 사용하는 것이었다. 특정 기간 동안의 컨테이너 생성 및 삭제 이벤트를 조회할 수 있었다.

docker events --since '2025-04-21T00:00:00' --until '2025-04-22T00:00:00'

결과 예시:

2025-04-22T09:33:12.000000000Z container create <container-id> (image=nginx)
2025-04-22T09:34:10.000000000Z container destroy <container-id> (image=nginx)

단점은 docker events도 기본적으로 메모리 기반이라 장기 보존이 안 된다는 점이다.

6. 향후 방지: 로그 수집 시스템 구축

이번 일을 계기로, 반복 방지를 위해 로그 수집 시스템을 구축하기로 했다. 예를 들어:

  • ELK Stack (Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • Datadog, Prometheus, Fluentd 연동 등

docker events를 별도로 수집해두면 나중에 언제 누가 컨테이너를 만들고 지웠는지 정확하게 파악할 수 있다.

최종 정리

  • docker ps -a로는 삭제된 컨테이너 이력 확인 불가
  • systemd(journalctl) 로그나 auditd로 추적 가능
  • docker events 명령어로 삭제/생성 이력 직접 조회 가능
  • 근본적 해결은 이벤트 로그를 장기 보관하는 시스템 구축

이 경험을 통해 장애 대응 시 단순히 컨테이너 현황만 보는 것이 아니라 시스템 로그와 이벤트 추적까지 함께 보는 습관을 들이는 것이 중요하다는 것을 깨달았다.

반응형

'개발 (Development) > Docker' 카테고리의 다른 글

[Docker] Docker 환경에서 yarn 설치 시 인증서 오류 해결  (0) 2025.06.01
[Docker] on-premise 환경에서 Docker Compose의 Build 문제 해결  (0) 2025.06.01
[Docker] Alpine 이미지 SSL 인증 오류 해결 (certificate verify failed)  (0) 2025.06.01
[Docker] Dockerfile에서 chown이 동작하지 않을 때, 의외의 원인과 해결법  (0) 2025.04.19
[Docker] Docker 로그 필터링 - grep 사용 시 문제와 해결 팁  (0) 2024.12.30
'개발 (Development)/Docker' 카테고리의 다른 글
  • [Docker] on-premise 환경에서 Docker Compose의 Build 문제 해결
  • [Docker] Alpine 이미지 SSL 인증 오류 해결 (certificate verify failed)
  • [Docker] Dockerfile에서 chown이 동작하지 않을 때, 의외의 원인과 해결법
  • [Docker] Docker 로그 필터링 - grep 사용 시 문제와 해결 팁
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (234)
      • 개발 (Development) (167)
        • Algorithm (1)
        • Angular (1)
        • AWS (7)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (32)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (12)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스 마스터 2급 2차
    python
    DevOps
    deepseek
    Kubernetes
    timescaledb
    java
    리눅스 마스터 2급
    JPA
    Linux
    PostgreSQL
    docker
    javascript
    pandas
    백준온라인저지
    Vue.js
    Linux master
    백준자바
    백준알고리즘
    파이썬
    ADsP
    JSON
    Kafka
    백준
    데이터분석
    AWS
    springboot
    오답노트
    MyBatis
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Docker] Docker 컨테이너 생성과 삭제 이력 추적하는 방법
상단으로

티스토리툴바