Docker 컨테이너에 대한 로그 회전을 설정하는 방법

5747 단어 loggingdocker
Boatswain Blog에 원래 게시됨 .


우리 모두는 로그가 필요합니다!



때때로 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

좋은 웹페이지 즐겨찾기