티스토리 뷰
도커를 이용해서 gitlab 서버를 관리하였는데 어느날 되지 않아 확인해보니 Disk 사용 공간이
부족 하였다.
docker 관련 파일들이 모인 경로에 여유 공간이 부족하였는데,
gitlab 컨테이너 volume은 용량이 넉넉한 Disk 쪽으로 mount되어 있는데 이해가 가지 않았다.. 🤔
대체 어떤 데이터가 쌓이고 있었을까? 그건 바로 컨테이너 로그 였다.
Container log 확인
1차 적으로 df -h와 du -sh * 등의 명령어를 통해 disk full이 발생한 경로들을 추적한 결과
/var/lib/docker/containers 경로 용량이 컸는데, container 쪽에 왜이렇게 용량이 큰가를 보았더니 아래와 같이 log 파일이 발견 되었다.😲
[root@localhost dd4aa4968f4ac1b28b0ecad23a9db9a1ed1c0e74c7459fb9af6786451b6db9e8]# ls
checkpoints config.v2.json dd4aa4968f4ac1b28b0ecad23a9db9a1ed1c0e74c7459fb9af6786451b6db9e8-json.log hostconfig.json hostname hosts mounts resolv.conf resolv.conf.hash
해당 log 파일 용량이 28G가 넘어있는것을 보고 log 삭제를 진행하였고,
저장 공간의 여유가 생기고 서버는 정상 동작을 하게 되었다.
근본적으로 컨테이너 로그 관리를 할 필요성을 느끼고 Docker 공식 사이트에서 로그 관련 설정을 뒤져보았다.
logging driver
모든 컨테이너에서는 log를 기본적으로 남기는데 이러한 설정을 logging driver를 통해서 할수 있었다. 기본 logging driver는 json 형식으로 되어 있으며 여러 유형 목록이 존재하였다.
참조: https://docs.docker.com/config/containers/logging/configure/
logging driver를 통해 log 관련 설정을 진행 하였다.
default logging driver 설정
도커 데몬이 실행될 때 기본적으로 사용할 환경설정 파일을 읽는데, 기본 로드될 파일은 아래와 같다.
/etc/docker/daemon.json
해당 경로로 가보면 설정 파일이 존재하진 않고 기본 설정을 할려면 해당 설정파일을 만들어주어야 했다.
환경설정 파일 생성
vi /etc/docker/daemon.json
daemon.json 내용
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3",
}
}
적용 시기
해당 환경설정 파일은 기존 컨테이너에 바로 적용되지 않고 신규로 생성한 컨테이너에 적용이 된다.
그렇기 때문에 컨테이너는 재생성해서 log 설정을 적용해주어야 했다.
마무리
로그 떄문에 disk full 이슈가 간간히 발생하였는데, 이 기회를 통해 docker 뿐만 아니라 application 단에서도 log 관리 정책을 잘 수립하여야 겠다는 생각이 든다.
참조
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
'개발 환경구축' 카테고리의 다른 글
[Nginx] SPA 빌드 파일 배포 설정 (with. Proxy) (0) | 2024.07.31 |
---|---|
[sequelize-auto] DB를 통해 sequelize model 생성하기 (0) | 2024.04.26 |
Docker Compose 구성 실습 - node express, mysql 연동 (0) | 2023.01.19 |
[Docker] 생성된 Container Image로 만들기 (0) | 2023.01.18 |
[Docker] 간단한 node Image 만들기 실습 (0) | 2023.01.18 |
- Total
- Today
- Yesterday
- 외래키 삭제
- 1종 적성검사
- 스파르타 코딩클럽
- rest api crud
- 1종 적성검사 신체검사
- component auto import
- 1종 적성검사 국가건강검진
- 외래키 생성
- postgresql 외래키
- Oracle Database 19C 설치
- vue 전역 컴포넌트 설정
- 오블완
- vue 컴포넌트 자동 import
- 강서 운전면허 시험장
- postgresql on update current_timestamp
- oracle 19c 설치
- rest api 조회 생성 수정 삭제
- 외래키 인덱스 생성 구문 쿼리
- postgresql 수정시간 자동 갱신
- 1종 적성검사 과태료
- rest api 단건 다건
- 티스토리챌린지
- postgresql trigger
- Oracle Database 19c install
- unplugin-auto-import
- epel/x86_64
- mariadb 외래키 조회
- epel repo
- postgresql 트리거
- express crud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |