이 영역을 누르면 첫 페이지로 이동
Arc 블로그의 첫 페이지로 이동

Arc

페이지 맨 위로 올라가기

Arc

[Docker] docker의 용량을 차지하는 overlay2는 무엇일까?

  • 2024.07.28 22:54
  • DevOps/Docker
글 작성자: SeoArc

이전에 overlay2에 용량이 가득 차 배포를 실패하는 상황이 발생하여 해결한 적이 있었다.

 

그런데 이 overlay2라는게 과연 무엇일까?

 

 

OverlayFS

먼저 overlay2를 알기 위해선 OverlayFS를 알 필요가 있다.


OverlayFS는 유니온 마운트 파일 시스템으로, 이를 통해 사용자는 한 파일 시스템을 다른 파일 시스템 위에 오버레이(overlay)할 수 있다. (이외에도 AUFS, Devicemapper가 있다)

union file system


OverlayFS는 overlay 또는 overlay2 중 하나를 사용한다. overlay는 커널 3.18 버전부터 기본적으로 내장되어 있으며, overlay2는 4.0부터 지원된다.

Docker를 설치하면 자동으로 사용되도록 설정되며 최신 버전의 Docker는 기본적으로 OverlayFS를 사용한다.
overlay2가 docker build와 같은 계층 관련 Docker 명령에 더 나은 성능을 제공하고 백업 파일 시스템에서 더 적은 inode를 사용하여 inode 사용 측면에서 더 효율적이다. 또 overlay는 lowerdir라는 단일화된 이미지 레이어를 사용하는 반면 overlay2는 여러 개의 레이어 구조를 지원한다. 가능하다면 overlay2를 사용하는 것이 좋다.

https://docs.redhat.com/ko/documentation/openshift_container_platform/3.11/html/scaling_and_performance_guide/comparing-overlay-graph-drivers

 

5.4.2. Overlay 및 Overlay2 그래프 드라이버 비교 | Red Hat Product Documentation

페이지 형식 선택 Multi-page Single-page

docs.redhat.com

 

 

Copy-on-Write (CoW)

OverlayFS를 포함한 유니온 마운트 파일 시스템은 Copy-on-Write(CoW) 전략을 사용한다.

 

즉, 이미지는 읽기 전용으로 구성되며, 이미지의 데이터를 변경해야 하는 경우 변경된 정보를 따로 저장한다.

이후 데이터를 읽을 때는 유니온 파일 시스템을 이용해 원본과 변경된 정보를 조합해서 읽게 된다.

 

대표적으로, OverlayFS는 다음과 같이 두 개의 레이어가 있는 구조를 갖고 있다.

lowerdir은 읽기 전용인 이미지 레이어에 해당하고 변경되지 않는 원본 데이터를 포함한다.

upperdir는 컨테이너 레이어에 해당하고 읽기/쓰기가 가능하다. 위에서 말한 변경사항에 관련된 정보는 이 레이어에 기록된다.

이 레이어들이 결합되어(merged) 컨테이너 마운트(Container mount)에서 통합된 뷰를 생성한다.

 

 

추가적으로 AUFS는 여러 개의 이미지 레이어가 있는 구조를 갖고 있다.

좀 더 자세히 알고 싶다면 다음 글을 참고하자.

https://docker-docs.uclv.cu/storage/storagedriver/aufs-driver/

 

Use the AUFS storage driver

Learn how to optimize your use of AUFS driver.

docs.docker.com

 

최근에는 OverlayFS2 방식을 많이 사용한다고 한다. (카카오 기술블로그 - 컨테이너 파일시스템)
(유니온 파일 시스템 구현체는 AUFS -> OverlayFS -> OverlayFS2으로 발전되었다.)

 

 

[참고]
[1] https://junstar92.tistory.com/170#1.-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%EC%9D%98-%EC%9B%90%EB%A6%AC
[2] https://docs.redhat.com/ko/documentation/openshift_container_platform/3.11/html/scaling_and_performance_guide/comparing-overlay-graph-drivers
[3] https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/7/html/7.2_release_notes/technology-preview-file_systems#technology-preview-file_systems
[4] https://docs.docker.com/storage/storagedriver/
[5] https://docker-docs.uclv.cu/storage/storagedriver/aufs-driver/
[6] https://www.joinc.co.kr/w/man/12/docker/storage
[7] https://tech.kakaoenterprise.com/154
[8] https://tech.kakaoenterprise.com/171
[9] https://blog.naver.com/alice_k106/221530340759

 

저작자표시 (새창열림)

'DevOps > Docker' 카테고리의 다른 글

[Docker] 디스크 용량으로 인한 배포 실패 상황  (0) 2024.07.27

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Docker] 디스크 용량으로 인한 배포 실패 상황

    [Docker] 디스크 용량으로 인한 배포 실패 상황

    2024.07.27
다른 글 더 둘러보기

정보

Arc 블로그의 첫 페이지로 이동

Arc

  • Arc의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (106)
    • Language (28)
      • C++ (0)
      • C# (0)
      • Java (28)
    • Algorithm (47)
      • Algorithm (15)
      • Data Structure (6)
      • PS (26)
    • Computer Science (22)
      • Design Pattern (1)
      • Network (14)
      • OS (7)
    • Game (0)
      • Unity (0)
    • Backend (3)
      • Spring (1)
      • JPA (2)
    • DB (0)
      • SQL (0)
    • DevOps (2)
      • AWS (0)
      • Docker (2)
      • Jenkins (0)
      • Nginx (0)
    • Software Engineering (4)
      • OOP (4)
    • AI (0)
      • Machine Learning (0)
    • Others (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 자바
  • algorithm
  • graph
  • 알고리즘
  • 네트워크
  • java
  • 그래프
  • network

나의 외부 링크

정보

SeoArc의 Arc

Arc

SeoArc

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © SeoArc. Designed by Fraccino.

티스토리툴바