도커 & 쿠버네티스

도커 컨테이너 로그 저장하기

grin-quokka 2022. 10. 31. 19:12

도커 컨테이너가 실행되는 동안 생기는 로그를 다양한 방식으로 저장할 수 있다.

 

1. json 파일 로그

아래 명령어로 mysql 컨테이너를 실행한다.

docker run -d --name mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:8

mysql 컨테이너 실행

  

컨테이너 로그를 확인하는 방법은 logs 명령어를 사용하면 된다.

옵션으로 --tail(마지막 몇줄만 출력), --since(지정한 유닉스 타임 이후 부터의 로그만 출력), -f(실시간으로 출력) 등이 있다.

docker logs mysql
docker logs --tail 2 mysql
docker logs --since 1667206800 mysql
docker logs -f -t mysql

 

마지막 2줄만 출력

 

로그는 json 파일로 자동으로 저장된다. 

cat /var/lib/docker/containers/컨테이너_아이디/컨테이너_아이디-json.log

(맥에서는 /var/lib/docker 폴더가 없다.)

 

2. syslog 로그

syslog : 리눅스/유닉스 계열에서 로그를 저장하는 도구

도커는 기본적으로 json 파일로 저장하지만, log driver를 설정해줄 수 있다.

docker run -d --name syslog_container --log-driver=syslog ubuntu:14:04 echo syslogtest

 

tail /var/log/syslog

우분투 버전에 따라 위치 다름

 

 + fluentd 나 AWS CloudWatch를 이용해 로그를 저장할 수도 있다.

 


컨테이너에 할당되는 자원 제한하기

 

1. 메모리 제한

최소 메모리는 4MB까지 설정할 수 있다.

docker run -d --memory="1g" --name memory_1g nginx

 

확인하기 위해서 inspect 명령어를 쓰면 된다. 

docker inspect memory_1g | grep \"Memory\"

 

2. CPU 제한

 

docker run -i -t --name cpu_share --cpu_shares 1024 ubuntu:14.04