Docker 컨테이너를 운영하다 보면 가장 먼저 확인하는 것이 바로 로그(Log) 입니다.
웹 서비스가 실행되지 않거나, 애플리케이션이 갑자기 종료되거나, 데이터베이스 연결 오류가 발생했을 때 대부분의 원인은 로그를 통해 확인할 수 있습니다.
Docker는 컨테이너의 표준 출력(Standard Output)과 표준 오류(Standard Error)를 자동으로 수집하며, docker logs 명령을 이용해 손쉽게 확인할 수 있습니다.
이번 글에서는 Docker Logs의 개념부터 로그 조회, 실시간 모니터링, 최근 로그 확인, 시간 기준 조회, 로그 드라이버까지 실무 중심으로 자세히 알아보겠습니다.
Docker Logs란?
Docker Logs는 컨테이너에서 출력되는 로그를 조회하는 기능입니다.
Docker는 컨테이너 내부 프로그램이 출력하는 로그를 저장하여 사용자가 언제든지 확인할 수 있도록 제공합니다.
구조는 다음과 같습니다.
Application
↓
STDOUT / STDERR
↓
Docker Engine
↓
Log Driver
↓
docker logs
애플리케이션이 콘솔에 출력하는 내용은 대부분 docker logs에서 확인할 수 있습니다.
Docker 로그가 필요한 이유
로그는 다음과 같은 상황에서 매우 중요합니다.
- 컨테이너 실행 실패 확인
- 애플리케이션 오류 분석
- 데이터베이스 연결 오류 확인
- 서버 장애 분석
- 성능 문제 조사
- 보안 이벤트 확인
운영 환경에서는 로그 확인이 가장 기본적인 장애 분석 과정입니다.
실행 중인 컨테이너 확인
먼저 컨테이너 이름을 확인합니다.
docker ps
예시
CONTAINER ID
IMAGE
STATUS
NAMES
컨테이너 이름 또는 ID를 이용하여 로그를 조회합니다.
전체 로그 확인
가장 기본적인 명령입니다.
docker logs web
또는
docker logs 컨테이너ID
컨테이너 시작 이후 출력된 로그를 모두 확인할 수 있습니다.
실시간 로그 확인
운영 환경에서 가장 많이 사용하는 옵션입니다.
docker logs -f web
-f
↓
Follow
↓
실시간 로그 출력
새로운 로그가 계속 출력됩니다.
종료하려면
Ctrl + C
를 누르면 됩니다.
최근 로그만 확인
모든 로그 대신 최근 로그만 출력합니다.
docker logs --tail 100 web
최근 100줄만 확인합니다.
최근 20줄만 확인하려면
docker logs --tail 20 web
을 사용합니다.
시간 정보 함께 출력
로그 출력 시 시간을 함께 표시합니다.
docker logs -t web
예시
2026-07-22T10:15:33Z
Application Started
문제 발생 시간을 분석할 때 유용합니다.
최근 일정 시간의 로그만 조회
예를 들어 최근 10분의 로그만 확인합니다.
docker logs --since 10m web
최근 1시간
docker logs --since 1h web
최근 하루
docker logs --since 24h web
불필요한 오래된 로그를 제외하고 분석할 수 있습니다.
특정 시각 이후 로그 조회
ISO 8601 형식의 시간을 사용할 수도 있습니다.
docker logs \
--since="2026-07-22T10:00:00" \
web
장애 발생 시점 이후의 로그만 확인할 수 있습니다.
특정 시각 이전 로그 조회
docker logs \
--until="2026-07-22T11:00:00" \
web
특정 시간 이전 로그만 조회합니다.
최근 로그와 실시간 모니터링 함께 사용
실무에서 자주 사용하는 조합입니다.
docker logs \
--tail 50 \
-f \
web
최근 50줄을 출력한 뒤 이후 로그를 실시간으로 계속 확인합니다.
장애 대응 시 가장 많이 사용하는 명령 중 하나입니다.
로그 저장 위치
기본 Log Driver를 사용할 경우 Linux에서는 일반적으로 다음 위치에 저장됩니다.
/var/lib/docker/containers/
각 컨테이너마다 로그 파일이 생성됩니다.
직접 수정하는 것은 권장되지 않습니다.
Docker Log Driver란?
Docker는 다양한 로그 저장 방식을 지원합니다.
대표적인 Log Driver는 다음과 같습니다.
- json-file
- local
- journald
- syslog
- fluentd
- gelf
- awslogs
- splunk
기본적으로는 json-file이 사용되는 경우가 많습니다.
현재 Log Driver 확인
docker info
또는
docker inspect web
로그 설정을 확인할 수 있습니다.
로그 크기 제한
로그가 계속 증가하면 디스크 용량이 부족해질 수 있습니다.
컨테이너 실행 시 제한을 설정할 수 있습니다.
docker run -d \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx
의미
- 로그 파일 최대 10MB
- 최대 3개 파일 유지
오래된 로그는 자동 삭제됩니다.
Docker Compose에서 로그 설정
Compose에서도 설정 가능합니다.
services:
web:
image: nginx
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
운영 서버에서는 로그 크기 제한을 설정하는 것이 좋습니다.
여러 컨테이너 로그 확인
Docker Compose 환경에서는 다음 명령을 사용합니다.
docker compose logs
실시간 출력
docker compose logs -f
특정 서비스만 조회
docker compose logs web
로그와 애플리케이션 출력
예를 들어 Python 프로그램이
print("Application Started")
를 출력하면
docker logs web
에서
Application Started
를 확인할 수 있습니다.
Java, Node.js, Go 등도 표준 출력으로 로그를 남기면 동일하게 확인 가능합니다.
로그 분석 시 확인해야 할 항목
다음 항목을 먼저 확인하는 것이 좋습니다.
- ERROR
- WARN
- Exception
- Stack Trace
- Connection Refused
- Permission Denied
- Out Of Memory
이러한 메시지는 장애 원인을 찾는 데 매우 중요한 단서가 됩니다.
실무에서 자주 사용하는 명령어
전체 로그
docker logs web
실시간 로그
docker logs -f web
최근 100줄
docker logs --tail 100 web
시간 표시
docker logs -t web
최근 1시간
docker logs --since 1h web
최근 50줄 + 실시간
docker logs --tail 50 -f web
Compose 로그
docker compose logs
실무 사례
온라인 쇼핑몰 서비스에서 고객이 결제를 진행하는데 오류가 발생했다고 가정해 보겠습니다.
운영자는 먼저 웹 애플리케이션 컨테이너의 최근 로그를 확인합니다.
docker logs --tail 100 payment-app
로그에서 데이터베이스 연결 오류가 발견됩니다.
이후 MySQL 컨테이너의 로그를 확인합니다.
docker logs mysql
MySQL 로그에는 디스크 공간 부족으로 데이터베이스가 정상적으로 시작되지 않았다는 메시지가 출력됩니다.
운영자는 디스크 용량을 확보한 뒤 MySQL을 재시작하고, 다시 애플리케이션 로그를 확인하여 정상적으로 결제가 처리되는 것을 확인합니다.
이처럼 실제 운영에서는 하나의 컨테이너 로그만 보는 것이 아니라 여러 서비스의 로그를 함께 분석하는 경우가 많습니다.
자주 묻는 질문
docker logs가 아무것도 출력하지 않는 이유는 무엇인가요?
애플리케이션이 표준 출력(STDOUT)으로 로그를 출력하지 않거나, 파일에만 로그를 저장하도록 설정되어 있을 수 있습니다.
로그 파일는 계속 커지나요?
기본 설정에서는 계속 증가할 수 있습니다. 운영 환경에서는 max-size, max-file 옵션을 사용해 로그 크기를 제한하는 것이 좋습니다.
로그를 삭제해도 되나요?
로그 파일을 직접 삭제하는 것은 권장되지 않습니다. 로그 드라이버 설정이나 로그 회전(Log Rotation) 기능을 이용하여 관리하는 것이 안전합니다.
Docker Compose에서도 같은 방식으로 로그를 볼 수 있나요?
가능합니다. docker compose logs, docker compose logs -f 명령을 이용하면 여러 서비스의 로그를 동시에 확인할 수 있습니다.
마무리
Docker Logs는 컨테이너 운영에서 가장 중요한 진단 도구입니다. 장애 발생 시 가장 먼저 로그를 확인하는 습관을 들이면 문제 원인을 빠르게 파악할 수 있으며, 실시간 모니터링과 로그 크기 관리까지 함께 적용하면 안정적인 운영 환경을 구축할 수 있습니다.