Docker overlay2

이건선·2023년 5월 6일
0

해결

목록 보기
31/48
post-custom-banner
  1. Server2가 CD 과정중에 용량 부족으로 실패하는 에러가 발생했다.
  2. 우리팀 서버는 EC2 프리티어를 사용하고있다.
  3. EC2 프리티어의 용량이 8GB 밖에 되지 않기 때문에 백업 버전관리를 서버에서 직접하지 않고 도커 허브를 통해서 하고 있었다.
  4. jenkins를 통해서 CI/CD결과를 받아보고 서버의 남은 용량이 5% 밖에 남지 않았다는 것을 인지하게 되었다. 직접 확인해 보니 정말로 5%밖에 남지 않았다.

  1. workflow에서 이전 버전의 container 및 image의 삭제를 자동화 해놓은상황이었기 때문에 서버에 직접 접속해서 남아있는 구버전의 container와 image가 남아있는지 명령어로 확인했다.
  2. 하지만 구버전의 image와 container는 존재하지 않았다.

  1. 확인해 보니 /var/lib/docker/overlay2 경로에서 많은 용량을 차지하고 있는 것을 발견했다.

  1. 문제를 찾아보니 /var/lib/docker/overlay2 가 용량이 큰 경우 diff/tmp 에 컨테이너 내부 파일구조 변경 사항들이 과도하게 쌓였기 때문이라고 한다. 이 파일은 삭제해도 동작에 큰 문제가 생기지 않는다고 한다.
    1. Docker 컨테이너의 작동원리는 여러 개의 레이어로 구성된 이미지를 기반으로 실행된다.
    2. 각 레이어는 독립적인 파일 시스템을 가지는데 이러한 레이어들을 효율적으로 관리하고 겹치게 하기 위해 Docker는 스토리지 드라이버를 사용한다.
    3. 이번에 문제가 된 overlay2 스토리지 드라이버는 Linux의 OverlayFS 기능을 활용한다.
    4. 이 기능은 OverlayFS는 여러 개의 디렉토리를 하나의 디렉토리처럼 겹치게 하여 사용할 수 있는 유니온 파일 시스템인데. 이를 통해 컨테이너가 실행되는 동안 기존 레이어에 변경사항이 발생하면, 해당 변경사항만을 새로운 레이어에 저장한다.
    5. 이렇게 변경된 내용만 새 레이어에 저장하는 전략을 Copy-on-Write(CoW)라고 한다.
  2. 정크 레이어들을 정리 후에 원활하게 동작한다.

참조 : https://velog.io/@newdana01/EC2-%EB%94%94%EC%8A%A4%ED%81%AC-%EC%9A%A9%EB%9F%89-%EB%B6%80%EC%A1%B1-%EC%9B%90%EC%9D%B8-%ED%8C%8C%EC%95%85%ED%95%98%EA%B8%B0-feat.-dockeroverlay2

profile
멋지게 기록하자
post-custom-banner

0개의 댓글