Quick Flow
# 최근 출력 확인과 live follow
docker logs --tail 100 app
docker logs --follow --timestamps app
# daemon 기본 driver와 container 실제 driver 확인
docker info --format '{{.LoggingDriver}}'
docker inspect --format '{{.HostConfig.LogConfig.Type}}' app
# 현재 시점 이후만 확인
docker logs --since 10m appdocker logs는 application이 container의 stdout/stderr로 쓴 출력을 logging driver를 통해 읽습니다. file 안의 로그를 자동으로 찾는 명령이 아니며, 모든 driver가 docker logs 읽기를 지원하는 것도 아닙니다.
로그의 출처
container에는 log file 위치라는 공통 규칙이 없습니다. application이 stdout/stderr로 쓰면 docker logs·Compose·orchestrator·external collector가 같은 stream을 읽을 수 있습니다. application이 /var/log/app.log에만 기록한다면 docker logs는 비어 있을 수 있고, file을 직접 수집하거나 stdout으로 연결해야 합니다.
docker logs --tail 200 --timestamps app
docker logs --since 2026-08-10T10:00:00Z app
docker logs --follow app--follow는 새 output을 계속 기다립니다. troubleshooting terminal을 닫으면 follow도 끝나며, 과거 전체 log가 장기 보관된다는 뜻은 아닙니다.
driver와 보존
Docker daemon의 기본 logging driver는 일반적으로 json-file입니다. 회전 설정이 없으면 고출력 container의 JSON log file이 daemon storage disk를 채울 수 있습니다. Docker 문서는 일반적인 Docker 사용에서 기본 회전과 효율적인 형식을 제공하는 local driver도 권장합니다.
{
"log-driver": "local"
}json-file을 사용해야 한다면 max-size, max-file로 회전을 정합니다. daemon.json의 log-opts 값은 모두 string으로 작성해야 합니다.
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}daemon default를 바꿔도 기존 container에는 자동 적용되지 않습니다. 변경 뒤 새로 만들어지는 container만 새 driver와 options를 받으므로, rollout 계획에 container recreation을 포함합니다.
전달과 장애
container마다 daemon default와 다른 driver를 지정할 수 있습니다. external logging driver 또는 none driver는 docker logs에서 읽을 수 없거나 유용한 output을 주지 않을 수 있으므로, incident runbook에 실제 query location을 명시합니다.
docker run -d \
--log-driver local \
--log-opt max-size=10m \
--log-opt max-file=3 \
--name api my-api:1.2.3logging driver로의 기본 delivery는 application이 stdout/stderr에 쓰는 흐름을 block할 수 있습니다. mode=non-blocking을 택하면 application을 막는 대신 intermediate buffer가 가득 찼을 때 새 log가 유실될 수 있습니다. audit log처럼 유실 불가한 요구와 request path를 막지 않아야 하는 요구는 같은 설정으로 해결되지 않을 수 있습니다.
logging driver 변경은 disk 문제의 즉시 처방이 아닙니다. 기존 container가 여전히 json-file을 쓸 수 있고, non-blocking delivery는 log 유실을 선택할 수 있습니다. driver, rotation, delivery mode, external retention을 함께 확인하십시오.
참고 링크
3 sources