SW Engineering/DevOps, SRE

Docker Container 로그 확인-컨테이너에서 발생하는 다양한 로그 확인

SungWookKang 2019. 3. 27. 05:34
반응형

Docker Container 로그 확인

-         컨테이너에서 발생하는 다양한 로그 확인

 

·         Version : Docker

 

어떠한 시스템을 운영하던지 로그는 매우 중요하다. 로그는 현재 서비스의 다양한 상태를 확인할 있는 훌륭한 도구이기 때문이다. Docker 경우 다양한 방법으로 컨테이너 로그를 남기는데, 이번 포스트에서는 컨테이너의 표준 입력(STDIN),  표준 출력(STDOUT), 표준 오류(STDERR) 로그를 별도의 메타데이터 파일로 저장하며 이를 확인하는 방법에 대해서 살펴본다.

 

컨테이너의 로그를 확인하는 명령은 docker logs 사용한다. docker logs 명령은 컨테이너의 표준 출력을 표시함으로써 애플리케이션 상태를 있다.

docker log [container name]

docker logs mariadb

 

 

컨테이너의 로그가 너무 많아 읽기 힘들면 --tail 옵션을 사용하여 마지막 로그부터 사용자가 지정한 라인까지 출력하도록 있다. 아래 예시는 마지막 로그의 10줄만 표시한다.

docker logs --tail 10 mariadb 

 

 

--since 옵션은 입력 받은 유닉스 시간 이후의 로그를 확인할 있으며 -t옵션으로 타임 스탬프를 표시할 수도 있다.

Docker logs --since 1549150300 -t mariadb

 

 

-f 옵션을 사용하면 실시간으로 생성되는 로그를 스트림으로 확인할 있다.

 


로깅 드라이버는 기본적으로 json-file 설정되지만 도커 데몬 시작 옵션에서 --log-driver 옵션을 사용하여 기본적으로 사용할 로깅 드라이버를 변경할 있다. 아래 스크립트는 nonoe 로깅드라이버로 alpine 컨테이너를 시작한다.

docker run -it --log-driver none alpine ash

 

실행중인 컨테이너의 로깅 드라이버를 확인하려면 docker inspect 명령을 실행한다.

docker inspect -f '{{.HostConfig.LogConfig.Type}}' <CONTAINER>

docker inspect -f '{{.HostConfig.LogConfig.Type}}' mariadb

 

 

현재 로깅 드라이버는 매우 다양하게 지원되고 있으며 아래 링크에서 지원되는 드라이버를 확인할 있다.

·         Configure logging drivers  : https://docs.docker.com/config/containers/logging/configure/

 

docker logs 명령은 json-file journald이외의 드리이버에서는 사용할 없다.

 

 

[참고자료]

·         View logs for a container or service  : https://docs.docker.com/config/containers/logging/

·         Configure logging drivers  : https://docs.docker.com/config/containers/logging/configure/

 

 

2019-02-03 / Sungwook Kang / http://sqlmvp.kr

 

Docker, docker logs, 컨테이너 로그

반응형