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 드라이버, 그리고 중앙 로그 수집 구조까지 이해하는 것이 중요합니다.
'컨테이너·워크플로우 자동화 > DocKer 기본 및 활용' 카테고리의 다른 글
| Docker COPY 명령어의 동작 원리와 빌드 컨텍스트 이해 (0) | 2026.02.17 |
|---|---|
| Windows + Docker Desktop + WSL2 구조 이해하기 (0) | 2026.02.17 |
| Docker에서 포트 바인딩과 포트 포워딩의 차이 (0) | 2026.02.17 |
| Docker 컨테이너 통신에서 IP 대신 DNS를 사용해야 하는 이유 (0) | 2026.02.16 |
| Docker Volume 설정 방식 두 가지: Bind Mount와 Named Volume의 차이 (0) | 2026.02.16 |