본문 바로가기

TABA/OS

컨테이너를 사용하는 이유 (서버 가상화, 하이퍼바이저)

728x90
반응형

가상화 배경

하드웨어 산업이 엄청나게 성장하면서 성능이 좋은 하드웨어들을 구하기가 쉬워졌고, 그래서 2000년대에 들어서부터는 가상화 기술이 급격히 부상하고 있다. 활용하지 않는 자원을 낭비하지 않고 효율적으로 사용하기 위해서 개발이 되기 시작하였다.

 

 

서버 가상화 Virtual Machine

가상화를 하기 위해서 하드웨어 혹은 소프트웨어 파티셔닝을 사용하는데

하이퍼바이저란, Virtual Box와 같은 가상 장치를 의미한다. 그 위에 가상 컴퓨터를 만든다.

 

 

리눅스 컨테이너 개요

컨테이너를 사용하는 이유?

 

위의 사진에서는 호스트 운영체제 위에 하이퍼바이저 (Virtual Box 등) 을 설치하고, 그 위에 가상 머신을 여러 개 설치해서 그 위에 다시 게스트 운영체제를 설치하고 응용프로그램을 설치해서 사용한다.

컨테이너는, 하이퍼바이저와 게스트 운영체제를 사용하는 과정을 생략한 채로, 컨테이너 엔진을 호스트 운영체제 위에 돌려서 다양한 어플리케이션을 돌리도록 만들어 준 것이다.

 

그리고 Container Engine 의 대표적인 예시로 도커를 들 수 있다. 도커가 개발된 이후부터 많은 기업에서 활발하게 리눅스 컨테이너를 사용하고 있다.

 

리눅스 컨테이너에서 사용하는 기술

  • cgrop (control group)

프로세스 또는 쓰레드를 그룹화하여 관리하는 기능과 시스템 리소스 (CPU, 메모리, 디스크 입출력 등) 의 사용을 제한하는 기술.

  • 리눅스 컨테이너는 호스트의 리소스를 공유하여 사용하는데, 이때 cgroup을 사용하여 컨테이너가 사용하는 리소스의 양을 제한할 수 있다.

namespace

다수의 오브젝트를 격리할 수 있음

리눅스의 3대 요소:

- 커널 : 하드웨어들을 제어하는 역할을 한다.

  • 쉘 : 커널과 사용자를 연결해주는 인터페이스.
  • 디렉토리 : 디렉토리와 파일은 파일시스템으로 관리됨

 

도커

  • Docker는 2013년 Docker 사에서 Go 언어로 개발한 오픈소스 플랫폼이다.
  • Docker를 사용하면 리눅스 컨테이너를 더 쉽게 관리하고 실행할 수 있다.
  • Docker의 가장 큰 특징은 이식성인데, 이는 개발 환경, 테스트 환경, 서비스 환경을 모두 동일하게 사용할 수 있다.

 

도커의 구조

도커로 리눅스 컨테이너를 생성하려면 미리 제작된 이미지가 있어야한다.

 

- 이미지 :

이미지는 여러 개의 레이어로 이루어져있다.

 

- 저장소 :

컨테이너를 생성하려면 이미지가 있어야하고, 이미지는 호스트가 아닌 ㅚ부에 저장되어 공유할 수 있어야한다.

범위에 따라 퍼블릭과 프라이빗으로 나뉜다.

대표적인 이미지 저장소로는 도커 허브가 있다.

 

- 컨테이너 :

컨테이너는 이미지의 실행 형태이다. 쉽게 말해서, 이미지가 메모리에 올라가면 컨테이너, 컨테이너가 디스크에 저장되어 있으면 이미지이다.

하나의 컨테이너에는 하나의 애플리케이셤남 실행되는 것이 권장되며, 추가로 실행할 수 있지만 유지하는 것은 권장하지 않는다.

 

 

도커의 기능

  • 이미지 생성 :

도커는 다양한 방법을 이미지를 생성할 수 있다.

대표적이면서 일반적으로 사용하는 것이 Dockerfile 이며, 그 밖에 컨테이너를 이미지로 생성하는 docker commit 명령과 컨테이너의 파일 시스템으로 이미지를 생성하는 docker export 와 docker import 명령이 있다.

  • 이미지 공유 :

도커는 저장소를 사용하여 이미지를 공유한다

저장소에는 도커 허브 뿐만 아니라 다른 프라이빗 이미지 저장소도 사용할 수 있다.

  • 컨테이너 생성 :

컨테이너는, 실행되고 있는 이미지를 말한다. 이미지는 공장에서 뽑아내는 것. 공장 틀이라고 할 수 있다.

사진출처 : https://phoenixnap.com/kb/containers-vs-vms

 

 

728x90
반응형

'TABA > OS' 카테고리의 다른 글

TABA Sep 20th - OS 실습 2  (0) 2022.09.20
TABA Sep 19th - OS 실습 1  (0) 2022.09.20