Docker Container 로그 확인-컨테이너에서 발생하는 다양한 로그 확인
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, 컨테이너 로그