본문 바로가기

업무 자동화 · 도구 검증 · 서비스 운영

반복 업무를 줄이는 방법,
직접 시험하고 기록합니다.

예약 명단 정리부터 알림 자동화, 앱 운영까지.
원본 예제와 확인표, 실험 결과를 함께 나눕니다.

첫 번째 실험 · 예약 명단

이름이 같으면
같은 예약일까요?

B102 · 방문자B9월 10일
B103 · 방문자B9월 11일

다른 예약입니다. 둘 다 남겨야 합니다.

가상 명단 12행으로 확인한 결과 →
개발 문제 해결

Docker 로그 확인: 최근 100줄·시간 범위·Compose 조회

by 코딩히어로 2026. 9. 12.
300x250
반응형

Docker 컨테이너 로그를 확인할 때는 대상 이름을 찾은 뒤 최근 줄 수와 시간 범위를 좁히면 됩니다. 시작 명령은 docker logs --tail 100 --timestamps 컨테이너명입니다. 새 출력을 이어서 보려면 -f를 추가합니다.

이 글은 Docker 공식 문서 기준의 명령 가이드입니다. 실제 운영 컨테이너에 접속하거나 로그를 수집한 결과는 아닙니다. 예제의 qa-web-01과 web은 각각 연습용 컨테이너 이름과 Compose 서비스 이름이므로 현재 환경의 이름으로 바꿉니다.

1. 먼저 컨테이너 이름과 상태 확인하기

docker ps -a --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'
docker logs --tail 100 --timestamps qa-web-01

docker ps에 -a를 붙이면 중지된 컨테이너도 목록에 포함됩니다. 시작 직후 종료되는 상황에서는 실행 중인 목록만으로 대상을 찾기 어려울 수 있습니다. 컨테이너가 남아 있고 로깅 방식이 조회를 지원한다면 중지 상태에서도 저장된 로그를 확인할 수 있습니다.

확인 항목 읽을 내용
Names 로그를 조회할 정확한 이름
Status 실행·종료 등 현재 상태
Image 해당 컨테이너가 사용하는 이미지

--tail 100은 최근 100줄로 출력을 제한합니다. --timestamps는 로그 시각을 붙입니다. 예전 로그가 섞여 있을 때는 현재 장애 시각과 같은 구간인지 먼저 확인한 뒤 내용을 읽습니다.

2. 최근 10분과 특정 시간대만 조회하기

docker logs --since 10m --tail 200 --timestamps qa-web-01

docker logs \
  --since '2026-09-11T09:00:00+09:00' \
  --until '2026-09-11T09:10:00+09:00' \
  --timestamps qa-web-01

첫 명령은 최근 10분 범위 안에서 마지막 200줄을 조회합니다. 두 번째는 시작과 끝 시각을 지정합니다. 예제의 날짜와 시간은 조회 문법을 보여 주기 위한 값이며 실제 장애 시각이 아닙니다.

서버와 작업 PC의 시간대가 다를 수 있으므로 절대 시각에는 +09:00처럼 시간대 오프셋을 명시하면 비교 기준이 분명해집니다. 날짜를 적을 때는 애플리케이션이 본문에 출력한 시각과 Docker가 붙인 시각도 구분해 읽습니다.

docker logs -f --tail 50 --timestamps qa-web-01

-f는 최근 50줄을 보여 준 뒤 새 로그를 계속 표시합니다. 조회를 끝낼 때는 Ctrl+C를 누릅니다. 이 명령에서 Ctrl+C는 로그를 보는 클라이언트를 종료하며 컨테이너 정지 명령이 아닙니다.

3. Compose에서는 서비스 이름으로 조회하기

docker compose ps -a
docker compose logs --tail 100 --timestamps web
docker compose logs -f --since 10m web

Compose 파일이 있는 프로젝트 디렉터리에서 실행합니다. docker logs가 컨테이너 이름이나 ID를 받는 데 비해 docker compose logs는 서비스 이름을 기준으로 조회합니다. 서비스 이름 web과 생성된 컨테이너 이름이 꼭 같지는 않습니다.

서비스 이름을 생략하면 프로젝트의 여러 서비스 로그가 함께 출력됩니다. 처음에는 대상 서비스를 지정해 문맥을 좁히고, 서비스 간 요청 흐름을 볼 때 범위를 넓히면 읽기 쉽습니다. 다른 디렉터리에서 실행한다면 사용하려는 Compose 파일과 프로젝트가 맞는지 먼저 확인합니다.

4. 로그가 보이지 않으면 출력 경로 확인하기

docker inspect --format '{{.HostConfig.LogConfig.Type}}' qa-web-01

docker logs는 컨테이너 프로세스의 표준 출력과 표준 오류를 로깅 드라이버를 통해 조회합니다. 애플리케이션이 컨테이너 안의 파일에만 기록한다면 그 내용이 자동으로 이 명령에 나타나는 것은 아닙니다.

출력이 없을 때는 시간 범위, 대상 컨테이너, 애플리케이션 출력 설정, 로깅 드라이버 순서로 확인합니다. 외부 로그 저장소를 쓰는 구성은 해당 저장소에서 조회해야 할 수 있습니다. 로그가 없다는 사실만으로 요청이 없었다고 결론 내리지는 않습니다.

파일로 보관할 때는 다음처럼 두 출력 스트림을 함께 받습니다. 파일명은 새 이름으로 정하고, 공유 전에 로그의 개인 데이터나 인증 값을 점검합니다.

docker logs --since 10m --timestamps qa-web-01 \
  > qa-web-01-log.txt 2>&1

저장 공간까지 확인해야 한다면 리눅스 큰 파일 조회로 사용량을 살펴보세요. 파일을 정리한 뒤에도 사용량이 유지되는 상황은 열린 파일과 df·du 차이를 따로 확인할 수 있습니다. 이 글에서는 로그 삭제나 로깅 설정 변경을 다루지 않습니다.

자주 묻는 질문

--tail과 --since를 같이 쓰면 어떻게 되나요?

지정한 시간 범위와 최근 줄 수 조건을 함께 적용합니다. 로그가 많이 발생하는 서비스는 --tail 제한 때문에 그 시간대의 모든 줄이 표시되는 것은 아닙니다.

재시작 전 로그도 볼 수 있나요?

같은 컨테이너가 재시작되고 로그가 보존되어 있다면 확인할 수 있습니다. 컨테이너 재생성, 삭제, 로그 회전 여부에 따라 이전 기록의 위치와 보존 범위는 달라집니다.

운영 서버에서 조회만 해도 되나요?

접근 권한과 로그의 데이터 취급 기준을 먼저 맞춰야 합니다. 명령은 조회 목적이지만 출력 파일에는 요청 데이터가 담길 수 있습니다. 필요한 시간과 서비스로 범위를 제한해 수집하세요.

근거: docker logs 옵션, Compose logs 옵션, Docker 로그의 출력 경로. 실제 환경에서는 설치된 버전과 로깅 드라이버를 함께 확인해야 합니다.

300x250
반응형

댓글