본문 바로가기

개발 일기라기 보단 메모장/Docker

04. 도커(Docker) 컨테이너란? (가상화 기술과의 비교)

반응형

1. 가상화 기술 사용 이전

한대의 서버는 하나의 용도로만 사용을 하고 있었음.

하나의 서버에 하나의 프로그랜만 서비스되다보니 다른 프로그램에는 영향을 끼치지 않아 안정적으로 운영할 수 있다는 장점이 있지만

반대로 남는 공간이 많아 비효율적이라는 단점이 존재했다.

 

2. 하이버 바이저 기반

논리적으로 공간을 분할하여 VM이라는 독립적인 가상환경을 만들어서 사용. => 네이티브형(세팅이 힘들어 잘 쓰지 않음) vs 호스트형

호스트 시스템 아래에 다수의 게스트 OS를 만들어 구동할수 있도록 해줌.(호스트형 하이퍼 바이저)

이러한 기술을 토대로 하여 도커가 개발됨.

 

3. 도커의 구조

기본 하드웨어에서 격리된 환경을 만들어서 애플리케이션을 배치해주는 방법이다.

도커의 경우에는 VM과 다르게 컨터이너 안에 게스트 OS가 필요가 없기 때문에 VM보다 훨씬 가볍다.

 

또한 VM의 경우에는 VM을 실행하고 그 안에 있는 게스트 OS를 실행하고 어플리케이션을 실행해야 하지만,

도커의 경우에는 호스트 OS안에 있는 이미지만 배포하면 되기 때문에 훨씬 빠르고 간편하다.

 

도커 컨터이너 안에서 동작하는 어플리케이션은 동일한 호스트 OS위에서 돌아가고 있어서 호스트의 다른 컨테이너들과 동일한 커널을 공유한다. 때문에 현재 컨테이너 내부에서 어떤 프로그램이 돌아가고 있는지 호스트 OS에서 확인이 가능하다.

 

4. 도커에서 컨테이너를 격리하는 방법

도커는 하이퍼 바이저 VM 기반에서 발전해온 것이므로 하이퍼 바이저에서 사용된 리눅스의 C Group과 네임스페이스 기능을 사용했다.

- C Group : 프로세스 그룹의 시스템 리소스 사용량 관리 기술.

- 네임스페이스 : 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술.

 

** 도커는 리눅스 VM기반위에서 돌아가고 있기 때문에 우리가 윈도우나 MacOS를 사용하고 있어도 리눅스 기반의 C Group이나 네임스페이스 기능을 사용할 수 있는 것이다.

 

5. 컨테이너의 구조

커널은 호스트 OS위에서 돌아가고 있기에 같은 커널을 공유하고 있고,

아래 초록색 박스는 컨테이너를 격리하면서 할당 받은 리소스의 양이다.

 

 

반응형