서버 운영에서 장애가 발생했을 때 가장 먼저 확인하는 것이 로그입니다.
Container가 정상적으로 실행되고 있어도 Application 내부에서는 오류가 발생할 수 있습니다.
예:
Container 상태
↓
running
하지만
↓
Application 오류 발생
따라서 안정적인 서버 운영을 위해서는 Container 로그를 효율적으로 관리해야 합니다.
Docker Compose Logging은 다음 정보를 확인하는 데 사용됩니다.
- Application 오류
- Database 연결 문제
- Network 오류
- Container 실행 문제
- 사용자 요청 기록
- 보안 이상 감지
기본 구조:
Application
↓
Container Log
↓
Docker Logging Driver
↓
Log Storage
↓
분석
이번 글에서는 Docker Compose 로그 확인 방법부터 실시간 모니터링, Log Rotation, Logging Driver 설정, Production 서버 로그 관리 전략까지 알아보겠습니다.
Docker Compose Log란 무엇인가?
Docker Container에서 실행되는 모든 출력 정보는 Log로 저장됩니다.
대표적인 로그:
- Application 출력
- Error 메시지
- Warning
- System 메시지
구조:
Application
↓
stdout / stderr
↓
Docker Engine
↓
Container Log
예:
Node.js Application:
console.log("Server Started")
결과:
Server Started
Docker Log에서 확인 가능합니다.
Docker Compose 기본 로그 확인 방법
전체 Service 로그 확인:
docker compose logs
결과:
app
database
nginx
특정 Service:
docker compose logs app
예:
Application Started
Database Connected
Error Connection Failed
Docker Compose 실시간 로그 확인
서버 운영에서는 실시간 확인이 자주 필요합니다.
명령:
docker compose logs -f
특정 Service:
docker compose logs -f app
동작:
새로운 로그 발생
↓
즉시 화면 출력
활용:
- 장애 확인
- 배포 확인
- Application 테스트
Docker Compose 최근 로그만 확인하기
로그가 많은 경우 전체 출력은 비효율적입니다.
최근 100줄:
docker compose logs --tail=100
특정 Service:
docker compose logs --tail=100 app
최근 시간 기준:
docker compose logs --since 1h
의미:
최근 1시간 로그 확인
Docker Compose Container 로그 확인
Docker 기본 명령도 사용할 수 있습니다.
확인:
docker logs container-name
실시간:
docker logs -f container-name
차이:
Docker 방식:
Container 기준
Compose 방식:
Service 기준
운영에서는 Compose 방식을 많이 사용합니다.
Docker Compose Logging Driver란?
Docker는 로그를 저장하는 방식을 선택할 수 있습니다.
이것을 Logging Driver라고 합니다.
대표 방식:
- json-file
- local
- syslog
- journald
- fluentd
- awslogs
기본:
json-file
구조:
Container
↓
JSON Log File
↓
Host Disk
Docker Compose Log Rotation 설정
가장 중요한 운영 설정 중 하나입니다.
문제:
Container 로그 증가
↓
Disk 용량 증가
↓
Server 장애
해결:
Log Rotation 설정
docker-compose.yml:
services:
app:
image: my-app
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
의미:
로그 파일 최대 10MB
↓
최대 3개 유지
결과:
app.log
app.log.1
app.log.2
Docker Compose Local Logging Driver
local Driver는 Docker 환경에서 효율적인 로그 관리 방식입니다.
설정:
logging:
driver: local
장점:
- 디스크 사용량 관리
- 성능 개선
- 압축 저장
Docker Compose Production Logging 구성
운영 환경에서는 로그를 별도 시스템으로 보내는 경우가 많습니다.
구조:
Container
↓
Log Driver
↓
Log Server
↓
검색 및 분석
대표 시스템:
- ELK Stack
- Loki
- Fluentd
- CloudWatch
Docker Compose Loki + Grafana 로그 관리
최근 많이 사용하는 구성:
Container
↓
Promtail
↓
Loki
↓
Grafana
역할:
Loki:
로그 저장
Grafana:
로그 검색 및 시각화
구조:
Application Log
↓
Loki
↓
Grafana Dashboard
장점:
- 빠른 검색
- Dashboard 제공
- 여러 서버 통합 관리
Docker Compose Error 로그 분석 방법
장애 발생 시 순서:
1단계
Container 상태 확인:
docker compose ps
2단계
최근 로그 확인:
docker compose logs --tail=100
3단계
Error 검색:
docker compose logs | grep error
4단계
시간 기준 확인:
docker compose logs --since 30m
Docker Compose Database 로그 확인
Database도 로그 분석이 중요합니다.
MySQL:
docker compose logs mysql
확인:
- Connection 오류
- Permission 문제
- Query 오류
PostgreSQL:
docker compose logs postgres
확인:
- Transaction 오류
- Authentication 오류
Redis:
docker compose logs redis
확인:
- Memory 문제
- Connection 문제
Docker Compose Nginx 로그 관리
Web Server 로그:
Access Log:
사용자 요청 기록
Error Log:
서버 오류 기록
확인:
docker compose logs nginx
분석:
- 접속량
- 404 오류
- 공격 패턴
Docker Compose 로그 보관 전략
운영 서버에서는 보관 정책이 필요합니다.
예:
최근 7일
↓
Local 저장
30일 이상
↓
Archive 저장
관리:
- 용량 제한
- 자동 삭제
- 압축 보관
Docker Compose 로그 보안 관리
로그에는 민감 정보가 포함될 수 있습니다.
주의:
Password
Token
API Key
개인정보
좋지 않은 예:
DB_PASSWORD=password123
좋은 방법:
Secret Masking
↓
민감 정보 제거
Docker Compose Logging Best Practice
운영 추천:
- Log Rotation 설정
- Error Log 모니터링
- 중앙 Log 시스템 사용
- 개인정보 제거
- 보관 기간 설정
- Disk 용량 관리
권장 구조:
Container
↓
Logging Driver
↓
Central Log System
↓
Dashboard
↓
Alert
Docker Compose 장애 대응 예제
상황:
웹사이트 접속 오류
확인 순서:
Nginx:
docker compose logs nginx
Application:
docker compose logs app
Database:
docker compose logs database
결과:
문제 위치 확인
↓
원인 분석
↓
복구 진행
자주 묻는 질문
Container가 실행 중인데 서비스가 안 됩니다.
Application Log를 확인해야 합니다.
Container 상태와 Application 상태는 다릅니다.
로그가 너무 많이 쌓이면 어떻게 하나요?
Log Rotation 설정이 필요합니다.
운영 서버에서는 로그를 어디에 저장하나요?
중앙 Logging 시스템을 사용하는 경우가 많습니다.
docker compose logs와 docker logs 차이는 무엇인가요?
docker compose logs는 Service 기준, docker logs는 Container 기준입니다.
마무리
Docker Compose Logging 관리는 장애 분석과 안정적인 서버 운영을 위한 핵심 기능입니다.
운영 서버에서는 단순히 로그를 확인하는 것뿐 아니라 저장 용량, 보관 기간, 검색 시스템까지 함께 설계해야 합니다.
Production 환경의 기본 로그 구조:
Docker Compose
↓
Container
↓
Logging Driver
↓
Log Storage
↓
분석
↓
장애 대응
다음 글에서는 Container가 정상적으로 동작하는지 자동으로 확인하는 핵심 기능인 Docker Compose Healthcheck 설정 방법을 알아보겠습니다.