Docker와 VM의 차이

이민정·2022년 3월 31일

Docker

목록 보기
2/4
post-thumbnail

우선 리소스 격리성에 대해 알아보자

리소스 격리성

웹 서버1과 웹 서버 2의 요구사항이 아래와 같다고 가정

웹 서버1웹 서버2
IPAB
Port NumberA-1B-1
방화벽 규칙ab

IP 주소는 인터넷상에 있는 컴퓨터의 고유한 주소
IP 주소를 통해 인터넷 상의 한 컴퓨터에서 다른 컴퓨터로 데이터를 주고 받음
port number를 통해 프로세스, 즉 프로그램의 실행을 식별

IP address는 집 주소, 포트 번호는 방 호수 라고 생각하면 쉽다

서버가 하나밖에 없으면 IP 주소를 구분하기 위해 브릿지 설정을 변경해야 한다
그리고 웹 서버 1과 웹 서버 2의 방화벽 규칙이 충돌하는 상황

이 때 필요한 것이 리소스 격리성

실제로는 하나의 컴퓨터를 이용하지만, 여러 개의 컴퓨터를 이용하는 것처럼 할 수 있다


[왼쪽: 도커, 오른쪽: 가상머신]

가상머신과 도커는 격리성 제공
-> 각 애플리케이션마다 다른 컴퓨터에서 진행되는 것처럼 IPport를 다르게 설정 가능

컨테이너 기술과 가상 머신의 공통점
: 프로세스, 네트워크, 파일 시스템 등을 격리할 수 있음

그럼 둘의 차이는 대체 뭘까...??


도커와 가상 머신의 차이점

  • 도커는 가상 머신 수준의 견고한 격리성을 제공하지 않는다

도커는 VM처럼 OS 위에 다른 OS를 실행하는 것이 아님
-> 가상머신보다 좋은 성능을 낼 수도 있음

VM은 만들고 실행하는 과정에서 많은 컴퓨팅 자원을 필요로 한다
그에 반해 도커는 한 호스트 컴퓨터에서 여러 개의 컨테이너를 띄워도 크게 무리가 없다

VM을 여러 개 띄운다고 생각하면...벌써 아찔하다 진짜

VM을 사용하기 위해서는 해당 VM 위에 반드시 OS 설치
-> 도커 이미지는 보통 애플리케이션 단위(물론 OS 이미지도 존재)

[왼쪽: 가상 머신, 오른쪽: 도커]

사진을 보면, VM의 구성 요소에는 OS가 존재하지만 도커 컨테이너는 OS 포함 안 함

다만, 도커라는 플랫폼 위에 컨테이너들이 올라가 있고, 그 아래에 호스트 OS 존재

각 컨테이너는 호스트 OS의 커널 공유
kernel: 시스템 콜과 같이 OS의 핵심 기능을 구현한 프로그램

도커는 애플리케이션을 컨테이너화해서 실행하는 것이 주 목적이므로
호스트 OS 입장에서 컨테이너 하나하나의 프로세스 수준이다

profile
안뇽

0개의 댓글