Union File System & Overlay File System

2025. 12. 31. 11:35Docker

유니온 파일 시스템(Union File System)은 “개념/원리”이고, overlay2는 그 원리를 리눅스에서 실제로 구현한 “구현체(드라이버)”입니다.

 

1️⃣ 유니온 파일 시스템(Union File System)이란? (개념)

ImageImage

 

유니온 파일 시스템은 여러 개의 레이어를
마치 하나의 파일 시스템처럼 겹쳐서 보여주는 기술적 개념입니다.

핵심 아이디어

  • 여러 레이어를 위에서 아래로 쌓음
  • 위 레이어가 아래 레이어를 덮어씀(override)
  • 읽기 시: 위 → 아래 순서로 탐색
  • 쓰기 시: 특정 레이어에만 기록

예시 (개념적)

Layer 3 (컨테이너 writable layer)
Layer 2 (app image)
Layer 1 (base image: ubuntu)
-----------------------------
→ 하나의 파일 시스템처럼 보임

👉 이 “레이어 합치기” 개념 자체가 유니온 파일 시스템입니다.

 

2️⃣ overlay / overlay2란? (리눅스 구현체)

 

 

ImageImage

OverlayFS

  • 리눅스 커널에 포함된 유니온 파일 시스템 구현
  • 실제 커널 모듈 이름: overlay

overlay2

  • Docker가 OverlayFS를 기반으로 만든 스토리지 드라이버
  • Docker에서 현재 디폴트값 (사실상 표준)

즉,

구분 의미
유니온 파일 시스템 개념 (이론)
OverlayFS 리눅스 커널 구현
overlay2 Docker용 구현 + 최적화

 

3️⃣ overlay2의 실제 구조 (중요)

overlay2는 딱 4가지 구성 요소로 동작합니다.

lowerdir   : 읽기 전용 이미지 레이어들 (여러 개)
upperdir   : 컨테이너의 쓰기 레이어 (하나)
workdir    : 커널 내부 작업용
merged     : 최종적으로 보이는 파일 시스템

 

구조 예시

/var/lib/docker/overlay2/
 ├─ lowerdir   (ubuntu, openjdk, app layer 등)
 ├─ upperdir   (컨테이너 변경 사항)
 ├─ workdir
 └─ merged     ← 컨테이너 내부에서 보이는 /

컨테이너 안에서 /etc/passwd를 보면
→ 사실은 merged 디렉터리를 보고 있는 것입니다.

 

4️⃣ 읽기/쓰기 동작 방식 (핵심 메커니즘)

📖 파일 읽기

  1. upperdir에 있으면 → 그 파일 사용
  2. 없으면 → lowerdir들을 순서대로 탐색

✍️ 파일 쓰기 (Copy-on-Write)

  • lowerdir 파일을 직접 수정 ❌
  • 대신:
    1. lowerdir 파일을 upperdir로 복사
    2. upperdir에서 수정
(lowerdir) /etc/nginx/nginx.conf
        ↓ (copy-up)
(upperdir) /etc/nginx/nginx.conf (수정됨)

👉 이게 컨테이너가 가벼운 이유입니다.

 

5️⃣ Docker 이미지 레이어와의 연결

ImageImageImageImage

Dockerfile의 각 명령은 하나의 레이어가 됩니다.

FROM ubuntu:22.04   # layer 1
RUN apt install -y openjdk  # layer 2
COPY app.jar /app.jar       # layer 3
  • 이 레이어들 → overlay2의 lowerdir
  • 컨테이너 실행 시 생성되는 변경 사항 → upperdir

 

6️⃣ 왜 overlay2가 컨테이너에 최적인가?

✅ 장점

  • 빠름 (커널 네이티브)
  • 레이어 공유 가능 (이미지 캐시 효율 ↑)
  • 디스크 사용량 최소화
  • 단순한 구조

❌ 한계

  • 파일 수가 많으면 copy-up 비용 증가
  • inode 변경이 잦은 워크로드(DB 등)에 불리
  • 그래서 DB는 volume 권장

 

7️⃣ 관계 정리

유니온 파일 시스템
   ↓ (개념)
OverlayFS
   ↓ (리눅스 커널 구현)
overlay2
   ↓ (Docker 스토리지 드라이버)
컨테이너 이미지 & 레이어

 

 

🎯 핵심 한 줄 정리

overlay2는 “유니온 파일 시스템 개념을 리눅스 커널의 OverlayFS로 구현하고, Docker 컨테이너 이미지 레이어 관리에 최적화한 결과물”입니다.

'Docker' 카테고리의 다른 글

디폴트 브릿지 vs 사용자 정의 브릿지  (0) 2025.12.31
Docker Network  (0) 2025.12.31
Spring Boot 앱의 JAR 파일 구조  (0) 2025.12.30
overlay2  (1) 2025.12.30
도커 이미지 레이어는 diff만 저장한다.  (0) 2025.12.30