[Linux] Overlay2 파일시스템으로 관리하는 디렉토리 만들기

오진선·2025년 1월 6일
0

Cloud

목록 보기
12/17
post-thumbnail

Docker Overlay2 파일 시스템

1. Overlay2 파일 시스템 소개

Overlay2는 Docker에서 사용하는 기본 스토리지 드라이버로, Copy-on-Write(COW)를 기반으로 합니다. 여러 레이어를 효율적으로 관리하며, 컨테이너 간 자원 공유와 디스크 공간 절약에 유리합니다.

특징

  • 효율적인 레이어 관리: 동일한 이미지를 기반으로 여러 컨테이너를 생성할 때 중복 데이터 없이 운영 가능.
  • Copy-on-Write(COW): 데이터 변경 시에만 실제로 복사 및 수정.
  • 빠른 읽기/쓰기: 단일 디렉터리에 기반한 데이터 관리.

2. Overlay2 디렉터리 구조

Docker는 /var/lib/docker/overlay2 디렉터리에 파일 시스템 데이터를 저장합니다.

주요 디렉터리와 파일

  • /var/lib/docker/overlay2/<layer-id>
    • Diff: 특정 레이어의 파일 변경 내용을 저장.
    • Lower: 부모 레이어를 가리키는 메타데이터.
    • Merged: 컨테이너 실행 시 마운트된 통합 파일 시스템.
    • Work: OverlayFS 작업 디렉터리.
/var/lib/docker/overlay2/
  |-- <layer-id>/
      |-- diff/     # 현재 레이어의 변경 파일
      |-- lower/    # 부모 레이어 정보
      |-- merged/   # 컨테이너가 보는 통합 디렉터리
      |-- work/     # 임시 작업 디렉터리

3. Overlay2 파일 시스템 관리

(1) Docker 컨테이너 실행 시 파일 구조 확인

새로운 컨테이너 생성 및 실행

docker run -it --name test-container ubuntu bash

Overlay2 디렉터리 확인

컨테이너가 실행된 후, 관련 파일은 /var/lib/docker/overlay2에 저장됩니다:

ls /var/lib/docker/overlay2

(2) 컨테이너의 파일 변경 추적

파일 생성 및 확인

컨테이너 내부에서 파일 생성:

touch /test-file

호스트에서 생성된 파일 확인:

ls /var/lib/docker/overlay2/<layer-id>/diff

변경된 파일은 diff 디렉터리에 저장됩니다.


(3) 중복 데이터 관리

Overlay2는 레이어를 공유하여 동일한 이미지를 사용하는 컨테이너 간 중복 데이터를 줄입니다.

확인 방법

  1. 여러 컨테이너 실행:
docker run -it --name container1 ubuntu bash
docker run -it --name container2 ubuntu bash
  1. 동일한 레이어 ID 확인:
docker inspect container1 | grep -i "merged"
docker inspect container2 | grep -i "merged"
profile
₍ ᐢ. ̫ .ᐢ ₎

0개의 댓글