티스토리 뷰
반응형
- Docker는 컨테이너와 서비스로부터 많은 정보를 얻을 수 있도록 다수의 로깅 메커니즘을 제공하고 있다.
- 이러한 로깅 메커니즘은 logging driver라고 함!
- 각각의 Docker 데몬은 명시적으로 다른 로깅 메커니즘을 사용하지 않는 이상, default logging driver를 사용한다.
- default logging driver는 'json-file' logging driver이며, 컨테이너의 로그를 JSON 형식으로 캐싱한다.
- 그러나 기본적으로 log-rotation을 지원하지 않으므로, json-file은 계속해서 쌓여 많은 디스크 공간을 차지하게될 수도 있다.
- 이는 Disk exhaustion의 원인이 될 수 있으므로, 다음과 같이 default logging driver를 설정하자.
- max-size : 로그 파일당 최대 용량을 지정
- max-file : 로그 파일의 최대 개수를 지정
- 위 조건에 따라 로그 파일의 로테이션이 이루어지게 된다.
- docker-compose.yml의 경우
version: "3.7"
services:
ingnoh:
image: ingnoh:latest
container_name: ingnoh-app
restart: always
network_mode: "host"
logging:
options:
max-size: "1024m"
max-file: "5"
- docker cli의 경우
docker run --name ingnoh-app --network host --restart always \
--log-opt max-size=1024m --log-opt max-file=5 ingnoh:latest
주의 :
- docker-compose.yml의 max-file은 반드시 string이어야 한다.
- 명시적으로 쌍따옴표를 처리하지 않는 경우, 다음과 같은 파싱 에러가 발생할 수 있다.
Creating ingnoh-app ...
Creating ingnoh-app ... error
ERROR: for ingnoh-app Cannot create container for service ingnoh-app: json: cannot unmarshal number into Go struct field LogConfig.Config of type string
ERROR: for ingnoh-app Cannot create container for service ingnoh-app: json: cannot unmarshal number into Go struct field LogConfig.Config of type string
- max-file: 5를 max-file: "5"로 수정할 경우 문제가 생기지 않는다.
- max-size는 굳이 쌍따옴표를 처리하지 않더라도 문제가 생기지 않는다. 암시적으로 string 형태로 판별되는 듯(근거 필요)
근거 :
log-opts configuration options in the daemon.json configuration file must be provided as strings.
Boolean and numeric values (such as the value for max-file in the example above) must therefore be enclosed in quotes (").
'Dev. > Docker' 카테고리의 다른 글
[Docker] docker build 중 COPY / ADD에서 특정 파일은 제외하기 (0) | 2021.10.18 |
---|---|
[Docker] m1 macbook no matching manifest for linux/arm64/v8 문제 (0) | 2021.08.05 |
[Docker] node.js Dockerfile 예시 (0) | 2021.06.16 |
[Docker] Docker API 사용 (1) | 2021.05.10 |
[Docker] Graceful Shutdown in Docker (1) | 2021.01.11 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- shell
- AWS IoT
- postgresql
- dev
- Java
- jQuery
- mysql
- JPA
- javascript
- react
- Spring Cloud Config
- IntelliJ
- hashicorp
- Node.js
- etc
- Puppeteer
- kotlin
- 코딩테스트
- terraform
- Gradle
- Git
- AWS
- spring boot
- JEST
- Database
- Linux
- pgloader
- eureka
- Vault
- Docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함