위 이미지는 유니온 파일시스템(Union Filesystem)의 작동 방식을 도식화한 것으로 보입니다. 각 계층(layer)이 어떻게 작동하고, 컨테이너 실행 시 파일의 읽기와 쓰기 작업이 처리되는지를 보여줍니다.
1. 상단 부분 설명
- 명령어
docker run
: 새로운 컨테이너를 실행합니다.--name mod_ubuntu
: 컨테이너 이름을 "mod_ubuntu"로 지정합니다.ubuntu:latest
:ubuntu:latest
이미지를 기반으로 컨테이너를 생성합니다.touch /mychange
:/mychange
라는 빈 파일을 생성합니다.
docker run --name mod_ubuntu ubuntu:latest touch /mychange
- 유니온 파일시스템의 관점
- 컨테이너 내부에서
/mychange
라는 파일이 생성됩니다. - 읽기 작업: 파일은
ubuntu:latest
이미지를 포함한 읽기 전용 계층에서 읽습니다. - 쓰기 작업: 새로 생성된 파일(
/mychange
)은 컨테이너의 쓰기 계층(읽기-쓰기 계층)에 기록됩니다.
- 컨테이너 내부에서
- 구조
- 컨테이너는 "유니온 파일시스템"을 통해 모든 파일을 읽습니다.
- 파일이 변경되거나 추가되면 새 쓰기 계층에만 기록됩니다. 기존 계층은 읽기 전용으로 유지됩니다.
2. 하단 부분 설명
- 결과 구조 (계층 관점)
/mychange
라는 파일은 쓰기 계층에 저장됩니다.ubuntu:latest
는 읽기 전용 계층으로 유지됩니다.- 쓰기 계층에 저장된
/mychange
는 컨테이너가 실행 중인 동안에만 보존됩니다.
- 특징
- 읽기 작업: 변경되지 않은 파일은 여전히
ubuntu:latest
계층에서 읽습니다. - 쓰기 작업: 변경된 파일만 쓰기 계층에 기록됩니다.
- 여러 컨테이너가 동일한 이미지를 기반으로 실행되더라도, 각 컨테이너의 쓰기 계층은 독립적입니다.
- 읽기 작업: 변경되지 않은 파일은 여전히
- 레이어 병합(Merge)
- 컨테이너 내부에서는 읽기 계층(
ubuntu:latest
)과 쓰기 계층이 병합되어 하나의 파일시스템처럼 보입니다.
- 컨테이너 내부에서는 읽기 계층(
핵심 요약
- 유니온 파일시스템 구조:
- 읽기 전용 계층(이미지)
- 읽기-쓰기 계층(컨테이너 작업 공간)
- 파일 작업의 처리 방식:
- 읽기: 변경되지 않은 파일은 읽기 전용 계층에서 읽음.
- 쓰기: 변경되거나 새로 생성된 파일은 읽기-쓰기 계층에 기록됨.
- 장점:
- 여러 컨테이너에서 동일한 이미지를 재사용해 저장 공간을 절약.
- 컨테이너 간 독립성을 유지하며 작업 가능.
- 응용:
- 이미지를 변경하지 않고도 추가 작업이 가능.
- 효율적인 자원 관리를 통해 개발 및 배포에 유리함.
네, 일반적인 파일시스템과 유니온 파일시스템(Union Filesystem)은 서로 다릅니다. 아래에 그 차이점과 특성을 정리하겠습니다.
1. 파일시스템(File System)
- 정의:
- 데이터를 저장하고 관리하기 위한 기본적인 시스템입니다.
- 디스크나 기타 저장장치에 데이터를 읽고 쓰는 방식과 구조를 정의합니다.
- 특징:
- 데이터를 계층적인 디렉토리와 파일 구조로 저장.
- 파일의 읽기, 쓰기, 삭제 등의 작업을 지원.
- 예: ext4, NTFS, HFS+, APFS 등.
- 목적:
- 단일 디스크나 볼륨에서 데이터를 관리하고 유지하기 위함.
- 데이터를 빠르고 효율적으로 접근할 수 있도록 돕습니다.
2. 유니온 파일시스템(Union Filesystem)
- 정의:
- 여러 파일시스템(또는 계층)을 병합하여 하나의 단일 파일시스템처럼 보이게 만드는 특별한 파일시스템.
- 컨테이너와 같은 환경에서 주로 사용됩니다.
- 특징:
- 레이어(layer) 기반 구조:
- 읽기 전용 계층: 베이스 이미지 파일이 여기에 저장됩니다.
- 읽기-쓰기 계층: 컨테이너 작업 시 생성되며, 변경 사항이 기록됩니다.
- 여러 계층이 병합된 상태로 하나의 파일시스템처럼 동작.
- 변경된 파일만 최상위 계층에 저장되고, 나머지 파일은 하위 계층에서 읽음.
- 레이어(layer) 기반 구조:
- 목적:
- 컨테이너화된 환경에서 저장공간 효율성을 높이고, 여러 계층 간 독립성을 유지.
- 동일한 이미지를 기반으로 다수의 컨테이너를 실행해도, 각 컨테이너는 독립적인 쓰기 계층을 가짐.
3. 차이점 비교
항목 | 파일시스템(File System) | 유니온 파일시스템(Union File System) |
---|---|---|
구조 | 단일 계층 구조. | 다중 레이어 구조(읽기/쓰기 계층 포함). |
용도 | 저장장치에 데이터를 읽고 쓰는 일반적인 용도. | 여러 계층을 병합해 컨테이너 환경에 사용. |
변경 관리 | 데이터가 직접 저장되고 변경됨. | 변경 사항은 읽기-쓰기 계층에만 기록됨. |
공간 효율성 | 데이터를 모두 저장하므로 비효율적일 수 있음. | 읽기 전용 이미지를 재사용하여 공간 효율적. |
대표 예 | ext4, NTFS, APFS 등 | OverlayFS, AUFS, UnionFS 등 |
사용 사례 | 일반 디스크 및 저장장치 데이터 관리 | Docker, Kubernetes 등 컨테이너 환경에서 사용. |
4. 유니온 파일시스템이 필요한 이유
- 컨테이너 기술에서는 같은 이미지를 여러 컨테이너에서 공유합니다.
- 컨테이너 내부에서 변경이 발생하면, 원본 이미지를 변경하지 않고도 쓰기 계층에만 저장합니다.
- 이를 통해:
- 저장공간을 절약.
- 이미지의 무결성을 보존.
- 컨테이너 간 독립성을 유지.
결론
- 파일시스템은 데이터를 물리적으로 저장하고 관리하는 기본 구조입니다.
- 유니온 파일시스템은 여러 계층을 병합해 효율적이고 유연한 파일 접근을 지원하는 방식으로, 특히 컨테이너 환경에서 자주 사용됩니다.
컨테이너 내부의 파일시스템은 유니온 파일시스템을 사용하여 효율적이고 독립적으로 작동합니다.
'Docker' 카테고리의 다른 글
도커 인 액션 7장 (0) | 2024.12.06 |
---|---|
Dockerfile 명령어 (0) | 2024.12.06 |
Docker의 CMD와 ENTRYPOINT (0) | 2024.12.06 |
파이프(pipe) ( | ) (1) | 2024.12.05 |
CFS(Completely Fair Scheduler) (0) | 2024.12.05 |