Docker 컨테이너에 대한 로그 회전을 설정하는 방법
우리 모두는 로그가 필요합니다!
때때로 Docker로 작업하면 특히 커뮤니티에서 가져온 Docker 이미지로 작업할 때 블랙 박스로 작업하는 것처럼 느껴지고 예상대로 진행되지 않습니다. 많은 경우 로그 읽기는 디버깅에 많은 시간을 차지합니다.
이 문서는 Docker 컨테이너에 대한 로그 회전 설정에 관한 것입니다.
기본 로깅 드라이버
컨테이너에 대해 다른 로깅 드라이버를 구성할 수 있으며 기본적으로 컨테이너의 stdout 및 stderr은/var/lib/docker/containers/[container-id]/[container-id]-json.log에 있는 json 파일에 작성됩니다. . 그대로 두면 아래와 같이 많은 양의 디스크 공간을 차지할 수 있습니다.
수동으로 로그 제거
이 json 로그 파일이 상당한 양의 디스크를 차지하는 경우 다음 명령을 사용하여 제거할 수 있습니다.
truncate -s 0 <logfile>
이러한 json 로그 파일을 정기적으로 제거하도록 cronjob을 설정할 수 있지만 장기적으로는 로그 회전을 설정하는 것이 좋습니다.
로그 회전 설정
기본 로깅 드라이버 구성
이는/etc/docker/daemon.json에 다음 값을 추가하여 수행할 수 있습니다. 존재하지 않는 경우 이 파일을 작성하십시오.
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "10"
}
}
json 파일 로깅 드라이버에는 몇 가지 추가 옵션이 있으며 syslog와 같은 다른 로깅 드라이버로 변경할 수도 있습니다. 자세한 내용은 Docker Docs - Configure logging drivers을 참조하십시오.
다음 명령을 실행하여 업데이트된 daemon.json을 다시 로드합니다. 새 구성은 재시작 후 새로 생성된 모든 컨테이너에 적용됩니다.
$ systemctl daemon-reload
$ systemctl restart docker
컨테이너에 대한 로깅 드라이버 구성
전역적으로 적용하지 않으려는 경우 컨테이너 수준에서 구성을 수행할 수도 있습니다.
도커 실행 명령
docker run 명령에서 로깅 드라이버와 옵션을 지정할 수 있습니다. 예를 들어:
$ docker run \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=10 \
alpine echo hello world
docker-compose 사용
로깅 드라이버 및 옵션은 docker-compose를 사용하여 구성할 수도 있습니다. 예를 들어:
version: '3.2'
services:
nginx:
image: 'nginx:latest'
ports:
- '80:80'
logging:
driver: "json-file"
options:
max-size: "1k"
max-file: "3"
설정이 작동하는지 확인합니다.
요약
기본 설정이 제대로 작동하더라도 컨테이너 로그가 언제 모든 디스크 공간을 차지하는지 알 수 없으며 위의 몇 가지 단계를 통해 이를 방지할 수 있습니다. 그 외에도 로그는 무언가 잘못되었을 때 유용할 뿐만 아니라 많은 숨겨진 값을 포함하는 중요한 자산입니다. 따라서 절대로 로그를 보내지 마십시오.
로그 관리 SAAS 솔루션을 찾고 있다면 Boatswain 사용을 고려하십시오. 그러면 모든 로그를 관리하고 Docker 서버를 모니터링할 수 있습니다. 💫
Insufficient facts always invite danger.
-- Spock @ Star Trek
Reference
이 문제에 관하여(Docker 컨테이너에 대한 로그 회전을 설정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ykyuen/how-to-setup-log-rotation-for-docker-container-4alp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)