유니언 파일 시스템(Union File System)
유니언 파일 시스템은 여러 파일 시스템을 하나로 통합하여 사용자에게 제공한다. Docker
의 이미지 구조는 이러한 유니언 파일 시스템의 개념을 활용하며, 여러 읽기 전용 계층
과 하나의 쓰기 가능 계층
으로 구성된다.
각 계층은 독립적으로 운영되기 때문에, 하나의 이미지에서 발생하는 변경이 다른 이미지에 영향을 미치지 않는다. 이 특성 덕분에 이미지의 재사용성이 높아지고, 이미지 관리가 효율적으로 이루어진다.
"copy-on-write"
전략은 데이터를 수정할 때 원본 데이터를 복사하여 쓰기 가능한 계층에 저장하는 방식이다. 이 방법은 데이터의 안정성을 유지하면서도 저장 공간을 효율적으로 사용할 수 있는 방식을 제공한다. 이러한 copy-on-write
메커니즘은 Docker와 같은 컨테이너 기술에서 중요한 역할을 담당하며, 자원 사용의 효율성과 시스템의 안정성을 동시에 증진시킨다.
리소스 격리 기술(Resource Isolation Technologies)
네임스페이스(Namespaces)
컨트롤 그룹(Cgroups)
추가적인 추상화 계층
Docker는 리눅스의 가상화 기능을 활용하여 컨테이너화된 애플리케이션을 실행한다. 다양한 리눅스 배포판과의 호환성을 보장하기 위해 추상화 계층
을 도입하는데, 이 계층은 Docker가 다양한 리눅스 환경에서 안정적으로 작동하도록 지원한다. 추상화 계층을 통해 Docker는 하드웨어와 운영 체제의 세부 사항으로부터 분리되어, 일관된 환경에서 애플리케이션을 실행할 수 있다.
Docker의 추상화 계층은 여러 가상화 인터페이스나 라이브러리를 활용하는데, 이는 Docker가 리눅스 커널의 다양한 기능과 효율적으로 상호 작용하도록 한다. 예를 들어, cgroups
와 namespaces
와 같은 리눅스 커널 기능을 활용하여 리소스 제한, 격리 등을 수행한다.
Docker 컨테이너는 가상 머신과 달리 가벼운 가상화를 제공한다. 이는 각 컨테이너가 별도의 운영 체제를 가지지 않고, 호스트 시스템의 커널을 공유한다는 의미다. 이로 인해 Docker는 빠른 시작 시간과 낮은 오버헤드를 가진 컨테이너를 제공하며, 시스템 자원을 효율적으로 활용할 수 있다.
결론적으로, Docker의 추상화 계층
은 다양한 리눅스 환경에서의 호환성과 효율적인 리소스 관리를 가능하게 하여, 애플리케이션의 배포와 관리를 간소화한다. 이는 개발자와 시스템 관리자에게 일관된 환경에서 애플리케이션을 배포하고 운영할 수 있는 강력한 도구를 제공한다.