docker logs
실행 중인 도커 컨테이너는 하나의 독립된 프로세스로 볼 수 있습니다. 로컬 호스트에서 해당 프로세스의 표준 출력(STDOUT)과 표준 에러(STDERR)를 확인하려면 어떻게 해야할까요? 도커에서는 다음 명령문을 제공합니다.
$ docker logs [옵션] [컨테이너 ID]
docker logs는 실행 시점에 존재하는 모든 로그를 출력합니다. 이 명령문은 json-file 또는 journald 로깅 드라이버로 시작하는 컨테이너에서만 동작합니다. 도커 컨테이너의 디폴트 로깅 드라이버는 json-file이기 때문에 별도 지정을 하지 않았다면 이 명령문을 사용 할 수 있습니다.
플래그
docker logs의 옵션으로 다음 플래그를 사용 할 수 있습니다.
플래그 | 비고 |
--tail [lines] 또는 -n [lines] | 출력 가능한 로그 전체에서 [lines]로 지정한 수량의 행만 출력합니다. 로그 전체를 출력하려면 [lines]에 all을 입력합니다. [lines]를 입력하지 않으면 디폴트는 all입니다. |
--follow 또는 -f | 컨테이너가 새롭게 기록하는 로그를 실시간으로 출력합니다. |
--timestamp 또는 -t | 로그가 기록된 시간을 타임스탬프(e.g. 2013-01-02T13:23:37Z)로 함께 출력합니다. |
--since | 지정된 타임 스탬프(e.g. 2013-01-02T13:23:37Z) 또는 상대 시간(e.g. 42m for 42 minutes) 이후에 기록된 로그만 출력합니다. |
--until | 지정된 타임 스탬프(e.g. 2013-01-02T13:23:37Z) 또는 상대 시간(e.g. 42m for 42 minutes) 이전에 기록된 로그만 출력합니다. 1.35+ 버전 이상부터 지원 |
--details | 로그의 세부 정보를 함께 출력합니다. |
테스트 환경 구축
로그 출력 테스트를 위해 간단한 테스트 환경을 구축합니다. 일정 시간마다 표준 출력을 실행하는 컨테이너를 구현합니다. 작업을 간소화 하기 위해서 BusyBox 이미지를 사용합니다.
$ docker run --name test -d busybox sh -c "while true; do $(echo date); sleep 1; done"
명령문을 실행하면 BusyBox 컨테이너는 1초에 한 번씩 현재 시간을 표준 출력합니다. 로컬 호스트에서 다음 명령문을 추가로 실행하여 로그를 출력합니다.
$ docker logs test
Fri Apr 1 17:10:12 UTC 2022
Fri Apr 1 17:10:13 UTC 2022
Fri Apr 1 17:10:14 UTC 2022
Fri Apr 1 17:10:15 UTC 2022
Fri Apr 1 17:10:16 UTC 2022
Fri Apr 1 17:10:17 UTC 2022
...
이제 docker logs에서 제공하는 플래그를 사용하여 기본적인 로그 출력에 대한 테스트를 진행해봅니다.
새로 기록되는 로그만 실시간 출력
새로 기록되는 로그만 실시간으로 출력하려면 다음 두 개 플래그(-f와 -n)을 함께 사용합니다.
$ docker logs -f -n 0 [컨테이너 ID]
-f는 새로 기록되는 로그를 실시간 출력하며, -n 0는 가장 마지막 0개 로그부터 출력하므로 명령문 실행 이전에 기록된 로그는 모두 출력에서 제외합니다.
특정 문자열을 포함하는 로그만 출력
Linux의 grep 명령어 역시 도커 로그 출력문과 함께 사용 할 수 있습니다. grep으로 지정된 문자열이 포함된 로그 행만 출력합니다.
$ docker logs [옵션] [컨테이너 ID] | grep [문자열]
'DevOps & Infra > Docker' 카테고리의 다른 글
[Infrastructure/Docker] dangling 및 <none> 태그 이미지 삭제하기 (0) | 2022.04.05 |
---|---|
[Infrastructure/Docker] 도커 로깅 드라이버 (0) | 2022.04.02 |
[Infrastructure/Docker] 도커 비지박스(BusyBox) 사용하기 (0) | 2022.04.02 |
[Infrastructure/Docker] 도커 컨테이너에서 Windows 또는 MacOS 로컬 호스트에 연결 (0) | 2022.04.02 |
[Infrastructure/Docker] docker login 사용법, CLI에서 도커 계정 로그인하기 (0) | 2022.03.30 |