관리 메뉴

밤 늦게까지 여는 카페

[도커 사용 시 주의사항 #1] 로그 드라이버 설정하기 - 로그 용량이 터지지 않도록 주의하세요! 본문

유용한 툴/docker

[도커 사용 시 주의사항 #1] 로그 드라이버 설정하기 - 로그 용량이 터지지 않도록 주의하세요!

Jㅐ둥이 2025. 3. 29. 00:31
반응형

오늘은 도커 사용하면서 놓치기 쉬운 로그 드라이버 설정에 대해서 공부한 내용을 정리해 보겠습니다.

 

1. 도커 컨테이너의 기본 로깅 방식

만약 여러분이 도커 컨테이너를 실행할 때 로그 드라이버를 따로 지정해주지 않았다면

 

도커는 컨테이너 별로 실행되고 있는 애플리케이션의 STDOUT, STDERR를 json-file 드라이버를 이용해서 저장하고 있습니다.

그리고 이렇게 저장되는 로그 파일의 용량은 컨테이너가 실행되고 있는 한 무한히 증가할 수 있습니다.

280MB까지 커져버린 로그 용량

 

도커 컨테이너를 계속 켜놓고 사용한다면 어느 순간 디스크 용량이 가득 차서 컴퓨터가 뻗어버리게 되는 것이죠 ㄷㄷ

 

2. 해결 방법

해결 방법은 당연하게도 로그 드라이버를 설정하는 것이겠죠!

 

로그 드라이버를 설정하는 방법은 크게 1) 컴퓨터 전역적으로 설정하는 방법, 2) 컨테이너 별로 설정하는 방법이 있습니다.

 

컴퓨터 전역적으로 설정하기 위해서는 /etc/docker/daemon.json 파일을 수정해야 하고

컨테이너 별로 설정하기 위해서는 docker 명령어 혹은 docker compose 파일을 수정해줘야 합니다.

 

아래에서 서술할 방법들에 모두 적어두겠습니다.

 

2.1. none 로그 드라이버 사용하기 - 도커 로그 비활성화

약간 과격한 방법으로 도커 컨테이너의 로그를 안 남기는 방법이 있습니다.

  • 이렇게 하면 docker logs 명령어를 실행하더라도 아무런 로그가 출력되지 않습니다 ㄷㄷ

컴퓨터 전역적으로 none 로그 드라이버 사용하기

1. 다음과 같이 /etc/docker/daemon.json 파일 작성합니다.

{
  "log-driver": "none"
}

 

2. sudo systemctl docker restart 명령어를 실행해서 도커 서비스를 재실행합니다.

3. 2 다음부터 실행되는 도커 컨테이너들의 로그가 비활성화 됩니다.

    - 이전에 실행된 컨테이너들은 재실행 시켜줘야 합니다.

 

docker 명령어를 이용한 none 로그 드라이버 사용하기

docker run 명령어를 이용할 때 --log-driver none 옵션을 추가해줍니다.

 

docker compose 파일에서 none 로그 드라이버 사용하기

다음과 같이 docker compose 파일의 서비스 하단에 logging을 추가해줍니다.

version: '3.2'

services:
  backend-server:
    logging:
      driver: 'none'

 

2.2. json-file 로그 드라이버의 로그 최대 용량 지정하기

가장 무난한 방법으로 기본 로그 드라이버인 json-file 로그 드라이버의 로그 최대 용량을 지정하는 것이 있습니다.

 

컴퓨터 전역적으로 json-file 로그 드라이버의 로그 최대 용량 지정하기

1. 다음과 같이 /etc/docker/daemon.json 파일 작성합니다.

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "1m",
    "max-file": "5"
  }
}

2. sudo systemctl docker restart 명령어를 실행해서 도커 서비스를 재실행합니다.

3. 2 다음부터 실행되는 도커 컨테이너들의 로그는 최대 5MB까지만 저장됩니다.

    - 이전에 실행된 컨테이너들은 재실행 시켜줘야 합니다.

docker 명령어를 이용한 json-file 로그 드라이버의 로그 최대 용량 지정하기

docker run 명령어를 이용할 때 --log-driver json-file --log-opt max-size=1m --log-opt max-file=5 옵션을 추가해줍니다.

docker compose 파일에서 json-file 로그 드라이버의 로그 최대 용량 지정하기

다음과 같이 docker compose 파일의 서비스 하단에 logging을 추가해줍니다.

version: '3.2'

services:
  backend-server:
    logging:
      driver: 'json-file'
      options:
        max-size: '1m'
        max-file: '5'

2.3. local 로그 드라이버 사용하기

도커 공식 문서에 따르면 local 로그 드라이버는 디스크 사용과 성능을 최적화한 로그 드라이버라고 합니다.

 

컴퓨터 전역적으로 local 로그 드라이버 사용하기

1. 다음과 같이 /etc/docker/daemon.json 파일 작성합니다.

{
  "log-driver": "local",
  "log-opts": {
    "max-size": "5m"
  }
}

 

2. sudo systemctl docker restart 명령어를 실행해서 도커 서비스를 재실행합니다.

3. 2 다음부터 실행되는 도커 컨테이너들의 로그는 최대 5MB까지만 저장됩니다.

    - 이전에 실행된 컨테이너들은 재실행 시켜줘야 합니다.

 

docker 명령어를 이용한 none 로그 드라이버 사용하기

docker run 명령어를 이용할 때 --log-driver local --log-opt max-size=5m 옵션을 추가해줍니다.

 

docker compose 파일에서 none 로그 드라이버 사용하기

다음과 같이 docker compose 파일의 서비스 하단에 logging을 추가해줍니다.

version: '3.2'

services:
  backend-server:
    logging:
      driver: 'local'
      options:
        max-size: '5m'

 

반응형