개발 저서/Docker & K8S

[Docker] Union Mount 기술에 대하여

성범이라고합니다 2022. 10. 2. 19:06

이번 블로깅에서는 도커를 들어가기 전 가상화 컨테이너 기술의 기반이 되는 Union Mount 기술에 대해서 짧게 다뤄보고자 한다.

 

Union Mount란?

여러 디렉토리를 하나의 디렉토리로 결합하여 마치 하나의 통합된 디렉토리로 사용하도록 하는 기술

여러 Layer의 이미지가 모여 하나의 시스템을 구성할 수 있음

OS Layer + JDK Layer + Application Layer = Application을 실행하는 이미지 생성 가능

 

Docker에서의 Union Mount

+) Docker는 Union Mount를 이용하여 이미지를 구성

+) 여러 개의 Read Only Image Layers (Docker Container를 실행하기 위한 환경) + Container Layer (실제 Docker Container가 동작하며 사용하는 File System)

 

여러 개의 Layer로 이루어진 FS(File System)을 마치 하나의 레이어 FS처럼 보이게끔함으로써 분산된 요소들을 하나의 시스템으로 구성하는 방식이다. 그림으로 확인하면 다음과 같다.

 

Union Mount FS Layers

Union Mount는 여러 개의 FS을 하나의 레이어로 보이게끔 하는 기술이라고 했다. 그렇다면 어떤 계층 디렉토리로 존재하는 걸까.


Union Mount Directory

 

Lower Directory (그림에서 Layer 1)

  • Read Only Directory로, Upper Directory에서 발생하는 조작에 영향을 받지 않음.

Upper Directory (그림에서 Layer 2)

  • Read/Write Directory로, 유저가 변형할 수 있는 디렉토리이다. View Layer를 보고 수행하는 File System 조작 내용이 업데이트 되는 위치이다.

View Directory (그림에서 Layer 3)

  • 유저에게 실제로 보여지는 디렉토리로, Lower Layer와 Upper Layer의 내용이 보인다.

Word Directory

  • Upper Direcctory에 작성되기 이전에, Atomic한 동자글 보장하기 위해 존재하는 디렉토리이다.

 

위와 같이 상황에 맞게, 어플리케이션의 환경에 맞게 OS부터 프레임워크, Git 까지 다양한 환경을 각각의 Layer로 쌓아 올려 하나의 배포 가능한 어플리케이션을 만들어간다.

 

Union Mount를 직접 다루는 코드에 대해서는 도커 관련해서 크게 필요하진 않으나 추후에 필요시 코드도 정리하도록 하겠습니다.


위와 같은 Union Mount 방식을 채택함으로써 미리 이미지를 준비한 뒤, 필요할 때마다 이미지를 가져와 사용이 가능하다 👉🏻 Provisioning 시간이 줄어 듦

AUFS, Overlay FS등 존재

  • AUFS : 2006년에 개발되어 레퍼런스가 많으며 쉽게 사용 가능하나, 리눅스 커널에 포함되지 않는 단점
  • Overlay FS : 2010년에 개발되어, 보편적으로 사용되는 파일 시스템으로 리눅스 커널에 통합됨