ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.