Docker 컨테이너를 운영하다 보면 "방금 찍힌 에러 로그가 뭐지?", "어제 새벽 3시에 무슨 일이 있었지?" 같은 상황을 직면하게 됩니다. 수백 만 줄의 로그 속에서 길을 잃지 않기 위해, 실무에서 가장 활용도가 높은 실용적인 명령어 패턴을 정리해 보았습니다. 이 5가지만 기억해도 로그 확인 시간이 절반으로 줄어듭니다.
1. 실시간 로그 모니터링: -f (Follow)
가장 기본적이면서도 가장 많이 쓰는 명령어입니다. 배포 직후 서버가 정상적으로 떴는지 확인하거나, 실시간으로 들어오는 요청을 모니터링할 때 사용합니다.
docker logs -f [컨테이너_이름]
- Tip: 로그가 너무 빠르게 올라가서 멈추고 싶다면 Ctrl + C로 빠져나올 수 있습니다.
2. 최근 N줄만 깔끔하게 보기: --tail
컨테이너가 몇 달 동안 켜져 있었다면, docker logs를 그냥 쳤을 때 수 기가바이트(GB)의 과거 로그가 터미널을 덮어버려 렉이 걸릴 수 있습니다. 최근 쌓인 로그만 빠르게 확인하세요.
# 최근 100줄만 출력
docker logs --tail 100 [컨테이너_이름]
# 최근 50줄을 출력하면서, 앞으로 쌓일 로그도 실시간으로 보기 (가장 추천!)
docker logs -f --tail 50 [컨테이너_이름]
3. 특정 시간대 범인 찾기: --since & --until
"오늘 오후 3시 40분쯤에 API가 터졌다"는 제보를 받았다면, 특정 시간대만 타임머신을 타고 돌아가듯 격리해서 봐야 합니다.
# 날짜와 정확한 시간 지정 (YYYY-MM-DDTHH:MM:SS)
docker logs --since "2026-07-02T15:40:00" --until "2026-07-02T15:50:00" [컨테이너_이름]
# 인간 친화적인 상대 시간 지정 (30분 전부터 10분 전까지)
docker logs --since 30m --until 10m [컨테이너_이름]
- m은 분(Minutes), h는 시간(Hours), d는 일(Days) 단위로 쓸 수 있어서 --since 3h 형태로도 자주 쓰입니다.
4. 로그에 강제로 시간표시 하기: -t (Timestamps)
컨테이너 내부 애플리케이션 프레임워크 설정을 잘못해서 로그에 "언제 이 로그가 찍혔는지" 시간이 나오지 않을 때가 있습니다. 이때 도커 엔진이 기억하는 타임스탬프를 강제로 주입할 수 있습니다.
docker logs -t [컨테이너_이름]
- 결과 비교:
• 기본: [INFO] Connection accepted.
• -t 적용: 2026-07-02T15:42:01.123456789Z [INFO] Connection accepted.
5. 에러 로그만 필터링하거나 검색하기: grep 조합
특정 키워드(예: Exception, Error, 404)가 포함된 로그만 골라내고 싶을 때 리눅스의 grep과 조합합니다. 여기서 핵심 포인트는 2>&1 리다이렉션입니다. 도커의 표준 에러(stderr)까지 파이프로 넘겨주어야 놓치는 로그가 없습니다.
# 'Exception'이 포함된 로그 검색
docker logs [컨테이너_이름] 2>&1 | grep "Exception"
# 실시간으로 들어오는 로그 중 'ERROR'라는 단어만 실시간 감시
docker logs -f [컨테이너_이름] 2>&1 | grep "ERROR"
💡 한눈에 보는 요약 치트시트 (Cheat Sheet)
상황명령어 조합
| 방금 배포하고 잘 돌아가는지 볼 때 | docker logs -f --tail 100 <name> |
| 어제 하루 동안 쌓인 에러 확인할 때 | docker logs --since 24h <name> 2>&1 | grep "ERROR" |
| 특정 장애 발생 시간 10분간을 분석할 때 | docker logs --since "시간" --until "시간" -t <name> |





최근댓글