-
Docker의 Root Dir 변경개발자 이야기 2025. 3. 4. 22:31
이전에 gitlab을 docker로 이전한 적이 있었는데, 그 이후 한 번 gitlab이 정상적으로 동작하지 않은 경우가 있었다. 용량초과가 원인이었다. 간단하게 해결할 수 있는 백업 파일들을 지우고 정상화시켰었는데, 이번에 또 같은 오류가 발생했다. 그래서 이번엔 그냥 넘기지 않고 오류를 자세히 확인하기로 했다.
HDD는 4T인데 용량 초과 오류가 났다. 처음 포맷 할 때 '/home' 에 대부분의 용량을 몰빵을 해 줘서 '/' 파티션이 50G가 되어 버렸다. 왜 그렇게 했을까? (내가 했을까? 가능성은 높지만 기억이 나지 않는다.)
docker는 기본적으로 '/var/lib/docker/'에 생성된다. 그리고 컨테이너를 생성하면 그 안에 컨테이너 별로 디렉토리가 생기고 그 안에 관련 파일들이 생성된다. 로그들도 이 디렉토리 안에 생성된다.
처음 docker를 설치했을 때, log관련된 디렉토리를 '/home'안에 넣었기 때문에 로그로 인한 용량은 걱정하지 않았었는데, 지금 생각해 보면 '/home'안의 로그는 전반적인 docker의 로그이고 container안의 로그는 생각하지 못했었다.
이것도 사실 크게 문제 될 것은 없었는데, gitlab의 경우 아무것도 하지 않은 상태에도 엄청난 로그를 생성해 버린다. 그래 이것이 문제였다. 그래서 container 조차도 '/home에 생성되도록 수정할 필요가 생겼다.
우선 컨테이너와 도커를 종료시킨다.
# docker stop {컨테이너} # systemctl stop docker
그리고 도커의 기본 디렉토리인 '/var/lib/docker'를 여유 공간이 많은 '/home'으로 옮길 수 있도록 설정파일을 생성한다.
파일의 경로는 /etc/docker/daemon.json 파일을 새로 만든 다음 아래의 내용을 추가한다.
- "data-root": "{신규 디렉토리}"
신규로 파일을 해당 위치에 만들어야 한다. 이제 컨테이너와 도커를 다시 실행시킨다.
# systemctl start docker # docker start {컨테이너}
그럼 해당 디렉토리에 컨테이너별로 디렉토리가 생성되는 것을 확인할 수 있다.
도커의 기본 위치는 아래 명령어를 통해 확인할 수 있다.
# docker info
변경된 Docker Root Dir 파티션 별 용량 확인
# df -h
어리석게도 /의 용량을 50G으로 잡아 버렸다. 멀쩡하던 시스템이 갑자기 용량 부족이 나온다면 대부분 100중 90은 log가 문제다. 그렇지 않으면 첨부파일로 동영상이 갑자기 많아진 경우다. 이번에도 원인을 로그파일이라고 생각했다. 그렇다면 그 로그 파일은 어디에 있을까? 그리고 어떻게 찾았을까?
나의 경우에는 '/'파티션이 문제였으므로 다른 파티션을 확인할 필요가 없었다.
최상위 디렉토리로 이동한 다음 아래 명령어를 이용해 디렉토리별 용량을 확인할 수 있었다.
# du -h --max-depth=1
현재 디렉토리 기준으로 한 뎁스 안쪽까지만 용량을 확인한다.
나의 경우에는 '/var'가 가장 용량이 많았다.
그다음 '/var'로 이동한 다음 다시 위 명령어를 입력했다.
그리고 '/var/lib'가 가장 많은 용량을 차지하는 것을 확인했다.
그리고 같은 방법으로 '/var/lib/docker'가 가장 많은 용량을 차지하는 것을 확인했다.
그래서 docker가 문제가 있었구나 확인할 수 있었다.
도커의 gitlab의 경우 매우 많은 로그를 생성해 낸다. gitlab을 거의 사용하지 않아도 한 달이 안되는 기간 동안 약 30G 가까운 로그를 만들어 냈다. gitlab 컨테이너의 설정을 변경하면 로그를 줄일 수 있다. 기본값인 log 레벨이 info였기 때문에 많은 로그를 만들어 냈지만, error로 변경하면 거의 로그가 없는듯 하다.
우선 용량에 여유가 있으니, 중간중간에 로그파일을 지워주면 될 것 같고, 그 와중에 또 공간 부족 오류가 발생한다면 그 땐 로그 레벨을 변경해서 로그를 줄일 수 있도록 해야겠다.
지금 로그 레벨을 변경할 수도 있지만, 음... 귀찮다...
반응형'개발자 이야기' 카테고리의 다른 글
2024년 회사 종무식 (0) 2025.01.04 저장소 업데이트로 인한 gitlab 도커 이미지 설치 (0) 2024.12.26 SECON 2024 세계 보안 엑스포 (0) 2024.03.23 외로움 (0) 2023.01.04 술자리 (0) 2022.08.18