[클라우드 컴퓨팅] 컨테이너

Future·2024년 12월 15일
1

클라우드 컴퓨팅

목록 보기
3/3

컨테이너란?

컨테이너란, 샌드박스화된 런타임 환경이다.

샌드박스화되었다는 의미는 프로세스가 보호된 영역에서 동작하여 호스트 시스템에 부정적인 영향을 미치지 않는다는 뜻이다.

컨테이너 기술은 애플리케이션과 애플리케이션이 동작하는 환경을 패키징하기 때문에 쉽게 배포가 가능하다.

가상머신 vs 컨테이너

가상머신은 물리적 시스템 전체 (CPU, 메모리, 디스크)를 가상머신으로 만들고 각 가상머신마다 운영체제를 탑재한 상태로 배포한다. 가상머신은 호스트에서 동작하지만, 서로 독립된 운영체제를 구동하기 때문에 오버헤드가 크다. 하지만 컨테이너는 호스트 커널을 공유하기 때문에 자원의 활용성이 높고, 경량화 되어 있다.

컨테이너는 호스트 운영체제에 종속적이다. 또한, 컨테이너는 컨테이너 엔진 위에서 동작한다. 가상머신에서 하이퍼바이저처럼 엔진이 여러 컨테이너를 관리한다.

속도는 컨테이너가 빠르다. 하지만 무조건 컨테이너가 좋은 것은 아니다.

MSA인 경우, 각 서비스가 독립적으로 실행되고 빠르게 배포, 수정해야 하기 때문에 컨테이너가 적합하다. 반면, 모놀리식 아키텍쳐인 경우, 가상머신이 안정적이고 고정된 컴퓨팅 자원을 사용할 수 있기 때문에 더 적합하다.
또한, 서버 자원을 최소화하고자 하는 경우 컨테이너를 사용하고 운영체제 기능이 많거나 여러 개의 운영체제가 필요한 서비스의 경우 가상머신을 사용하는 것이 적합하다.

컨테이너는 가상화 기술인가?

전통적인 의미의 가상화는 아니지만, 가상화 기술의 한 형태라 볼 수 있다.
전통적인 가상화는 하이퍼바이저를 사용해 하드웨어 수준에서 가상화를 구현하지만, 컨테이너에서는 운영체제 수준에서 가상화를 구현한다. 그 과정에서 네임스페이스와 cgroup을 활용해 컨테이너 프로세스와 리소스를 격리한다.

리눅스 컨테이너(LXC)

리눅스 컨테이너가 동작하기 위해 몇 가지 주요 컴포넌트가 존재한다.

  • cgroup : 프로세스를 그룹핑하여 컴퓨팅 자원 사용량을 제한한다.
  • 네임스페이스 : 프로세스를 실행할 때, 시스템의 리소스를 분리해서 실행할 수 있도록 하는 기능이다.
  • SELinux : 호스트 시스템과 컨테이너, 컨테이너와 컨테이너 간 보안적으로 안전하게 분리한다.
  • 관리 인터페이스 : 컨테이너를 생성하고 관리할 수 있는 인터페이스를 제공한다.
profile
Record What I Learned

1개의 댓글

comment-user-thumbnail
2024년 12월 17일

샌드박스의 유래는 어린이들이 안전하게 놀 수 있는 모래사장같은 환경을 제공한다는데에서 나왔대

답글 달기