Overlay Driver

2024. 11. 20. 11:30Docker

Overlay Driver란?

Overlay DriverLinux 커널의 OverlayFS(Overlay Filesystem)를 기반으로 한 컨테이너 스토리지 드라이버입니다. Docker, Podman과 같은 컨테이너 플랫폼에서 사용되며, 컨테이너의 이미지 레이어를 효율적으로 관리하는 데 활용됩니다.

Overlay Driver는 여러 파일 시스템 레이어를 겹쳐서 하나의 통합 파일 시스템처럼 작동하도록 설계되었습니다. 이를 통해 컨테이너마다 독립적인 파일 시스템을 제공하면서도, 디스크 사용량을 줄이고 성능을 향상시킬 수 있습니다.


OverlayFS의 핵심 개념

OverlayFS는 읽기 전용 레이어읽기-쓰기 레이어를 조합하여 동작합니다:

  1. Lowerdir (읽기 전용 레이어):

    • 기본 이미지 파일 시스템입니다.
    • 변경되지 않는 데이터(기본 OS 파일 등)가 여기에 저장됩니다.
  2. Upperdir (읽기-쓰기 레이어):

    • 컨테이너의 변경 사항이 저장되는 위치입니다.
    • Lowerdir에 있던 파일을 수정하면 Upperdir에 복사되고, 수정된 파일은 Upperdir에 저장됩니다. 이를 Copy-on-Write(CoW)라고 합니다.
  3. Merged View (통합 파일 시스템):

    • Lowerdir과 Upperdir를 합쳐 하나의 통합된 파일 시스템처럼 보여줍니다.
  4. Workdir:

    • OverlayFS가 파일 시스템 작업을 처리하는 데 사용하는 임시 디렉토리입니다.

Overlay Driver의 작동 방식

컨테이너가 실행될 때, Docker는 이미지를 여러 레이어로 분리하여 저장합니다. Overlay Driver는 이 레이어들을 OverlayFS를 사용해 관리합니다.

  1. 이미지 레이어:

    • Docker 이미지는 여러 개의 읽기 전용 레이어로 구성됩니다.
    • 각 레이어는 Lowerdir로 사용됩니다.
  2. 컨테이너 레이어:

    • 컨테이너는 이미지 위에 추가된 읽기-쓰기 레이어(Upperdir)를 가집니다.
    • 컨테이너가 데이터를 수정하거나 생성하면 Upperdir에 저장됩니다.
  3. 통합 파일 시스템:

    • Lowerdir(읽기 전용)과 Upperdir(읽기-쓰기)을 병합하여 컨테이너가 파일 시스템을 하나로 보도록 합니다.

Overlay Driver의 주요 특징

  1. Copy-on-Write(CoW):

    • 읽기 전용 파일을 수정할 때 Upperdir로 복사한 후 수정합니다.
    • 이를 통해 효율적으로 디스크 공간을 사용하고, 원본 이미지를 보호합니다.
  2. 효율성:

    • 이미지 레이어를 공유하여 여러 컨테이너에서 동일한 파일을 중복 저장하지 않습니다.
    • 디스크 사용량과 I/O 작업을 줄입니다.
  3. 속도:

    • 레이어 구조를 활용해 파일 시스템 동작을 빠르게 처리합니다.
    • 커널 수준에서 동작하므로 성능이 뛰어납니다.
  4. 유연성:

    • 여러 레이어를 겹쳐 사용할 수 있어, 다양한 컨테이너 작업에 적합합니다.

Overlay Driver의 동작 예

  1. 기본 이미지:

    • 예: Ubuntu 이미지(/bin/bash, /usr/bin/apt 등).
    • Lowerdir에 저장됩니다.
  2. 컨테이너 실행:

    • 컨테이너가 실행되면 읽기-쓰기 레이어(Upperdir)가 생성됩니다.
  3. 파일 수정:

    • 컨테이너가 /etc/hosts 파일을 수정하면, 원본 파일(/etc/hosts)은 Lowerdir에 남아 있고, Upperdir에 복사된 뒤 수정됩니다.
  4. 파일 생성:

    • 새로운 파일은 Upperdir에 직접 생성됩니다.

Overlay Driver의 장점

  1. 효율적인 디스크 사용:

    • 동일한 이미지를 사용하는 여러 컨테이너가 레이어를 공유하여 디스크 공간 절약.
  2. 빠른 컨테이너 생성:

    • 이미지 레이어를 재사용하여 컨테이너 생성 속도를 크게 향상.
  3. 확장성:

    • 대규모 컨테이너 환경에서도 적합.
  4. 파일 시스템 독립성:

    • 호스트의 파일 시스템 종류에 구애받지 않고 작동 가능(일반적으로 ext4, xfs 등에서 사용).

Overlay Driver의 단점

  1. 레이어 제한:

    • OverlayFS는 최대 128개의 레이어를 지원하지만, 너무 많은 레이어는 성능 저하를 유발할 수 있습니다.
  2. I/O 성능:

    • Copy-on-Write 작업이 빈번할 경우 성능 저하가 발생할 수 있습니다.
  3. 호환성 제한:

    • 일부 오래된 커널 버전에서는 OverlayFS가 지원되지 않을 수 있습니다.
    • OverlayFS는 NFS(Network File System)와 같은 원격 파일 시스템에서는 동작하지 않습니다.

Overlay Driver와 다른 Docker 스토리지 드라이버 비교

특징 Overlay/Overlay2 AUFS Device Mapper Btrfs
레이어 관리 빠르고 효율적 유사하지만 오래된 기술 블록 장치 수준 관리 Copy-on-Write 파일 시스템
성능 빠름 중간 느림 중간
지원 여부 최신 Docker 기본 드라이버 구형, 비권장 지원되지만 비권장 제한적 (Btrfs 필요)
운영 환경 일반적인 모든 환경 오래된 배포판 대규모 데이터 작업에 적합 SSD 및 특정 환경에서 적합

Overlay Driver의 주요 명령어

  1. Docker 스토리지 드라이버 확인

    docker info | grep Storage

    출력 예:

    Storage Driver: overlay2
  2. 사용 중인 레이어 확인

    docker inspect <container-id>
  3. 저장소 경로 확인

    docker info | grep "Docker Root Dir"

    출력 예:

    Docker Root Dir: /var/lib/docker
  4. 레이어 상태 확인

    • 컨테이너 파일 시스템의 레이어를 /var/lib/docker/overlay2에서 확인할 수 있습니다.

Overlay Driver가 적합한 환경

  1. 대규모 컨테이너 환경:

    • 여러 컨테이너가 동일한 이미지를 사용할 경우 효율적.
  2. 속도가 중요한 환경:

    • 빠른 컨테이너 시작과 관리가 요구되는 경우.
  3. 리눅스 최신 커널 기반 환경:

    • 최신 커널에서 최적의 성능을 발휘.


Overlay Driver는 컨테이너 기술에서 효율적인 스토리지 관리와 성능을 제공하는 핵심적인 구성 요소입니다. 레이어 기반 관리Copy-on-Write 특성을 통해 디스크 공간을 절약하고, 컨테이너 생성 및 실행 속도를 높입니다. 최신 리눅스 환경에서 안정적이고 빠르게 동작하며, 대다수의 Docker 및 Kubernetes 워크로드에 적합합니다.

'Docker' 카테고리의 다른 글

alpine  (0) 2024.11.21
Remove Container & Docker Image  (0) 2024.11.20
ext4 파일 시스템  (0) 2024.11.20
MNT 네임스페이스  (0) 2024.11.20
AWS EC2 Docker 설치 및 Docker 권한 추가  (0) 2024.11.18