컨테이너·워크플로우 자동화/DocKer 기본 및 활용

Docker 로그 구조 이해: json-file부터 중앙 수집 시스템까지

Data Jun 2026. 2. 17. 12:49

Docker 컨테이너 로그는 기본적으로 stdout / stderr 기반으로 동작합니다.
애플리케이션이 출력한 로그를 Docker가 받아 저장하는 구조입니다.

 

운영 환경으로 갈수록 중요한 건
“로그가 어디 저장되는가”보다
**“어떻게 관리하고 확장할 것인가”**입니다.

 

1. 기본 로그 드라이버: json-file

Docker의 기본 로그 드라이버는 json-file입니다.

컨테이너
   ↓
Docker
   ↓
/var/lib/docker/containers/<id>/<id>-json.log

특징:

  • 로컬 디스크에 JSON 형식으로 저장
  • docker logs로 조회 가능
  • 로그가 계속 커질 수 있음

즉,

기본은 파일 기반 로컬 저장입니다.

 

2. 로그 파일 분리 (Log Rotation)

로그가 계속 쌓이면 디스크를 가득 채울 수 있습니다.
그래서 파일 분리 설정을 사용합니다.

docker run \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx

의미:

  • 10MB 넘으면 새 파일 생성
  • 최대 3개까지만 유지
  • 가장 오래된 로그 자동 삭제

즉,

디스크 사용량을 제한하는 안전장치입니다.

 

3. local 로그 드라이버

local은 json-file의 개선판입니다.

docker run \
  --log-driver=local \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx

 

특징:

  • 압축 저장
  • 자동 로테이션(로그 파일이 일정 크기를 넘으면 새파일 분리, 삭제 등) 기본 지원
  • 디스크 효율성 높음
  • docker logs 사용 가능

구조는 같지만 저장 방식이 더 효율적입니다.

단일 서버 운영 환경에서는 local이 더 안정적입니다.

 

4. 중앙 로그 수집 시스템 (왜 필요한가?)

서버가 여러 대일 경우:

  • 각 서버마다 접속해서 로그 확인 불편
  • 장애 분석 어려움
  • 통합 검색 불가

그래서 구조는 다음과 같습니다:

컨테이너
   ↓
Docker
   ↓
로그 수집기 (fluentd 등)
   ↓
중앙 로그 서버 (ELK, Loki 등)

이렇게 하면:

  • 모든 서버 로그를 한 곳에서 검색
  • 시간 기준 분석 가능
  • 장애 추적이 쉬워짐

운영 규모가 커질수록 중앙 수집은 필수에 가까워집니다.

 

5. 정리

Docker 로그는 기본적으로 json-file로 로컬 저장되며, 운영 환경에서는 로테이션과 local 드라이버, 그리고 중앙 로그 수집 구조까지 이해하는 것이 중요합니다.