vm(virtual machine)란?
가상 머신으로 윈도우, 리눅스, 맥 os 등 새로운 os를 설치하여 새로운 가상 환경을 만든다
vm은 하나의 컴퓨터 위에, 자원을 나누어 만들어지기 때문에, 자원이 많이 필요하고, 하나의 PC에서 독립적인 IP와 독립적인 사용자, 독립적인 공간을 할당받아 독립적인 서비스를 제공할 수 있는 기능이다.
이런 가상화 기능으로 Linux , Redhat , Mac 등의 여러 가상 OS환경을 한대의 컴퓨터에 설치해 사용할 수 있습니다,
사용 이유
1. 하나의 컴퓨터로 서로 다른 두 개 이상의 운영체제를 실행하고자 할 때
2. 하나의 컴퓨터 자원을 여러 사용자에게 나누어 주는 상황에서 상호 간섭을 없애고 싶을 때
예를 들어, 클라우드 등에서 사용하는 가상 머신이 있다.
3. 컴퓨터의 다른 부분에 영향을 주지 않는 독립 환경을 만들고 싶을 때
예를 들어, 악성 코드를 분석할 때 감염을 방지하기 위해 사용한다.
장점
서로 다른 VM들은 모두 다른 환경을 가지고 있다.
도커 컨테이너보다보안성이 높다.
한 컴퓨터에서 다양한 OS 환경을 다룰 수 있다는 것이 큰 장점이다.
단점
VM기능을 쓸 대상 컴퓨터는 OS 레벨부터 또 다른 컴퓨터를 구성하는 것과 같기 때문에, 비교적 자원이 많이 필요하다.
VM은 하나의 컴퓨터와 같으므로 컨테이너 환경을 사용하는 것과 달리 유지 업데이트 관리가 VM별로 따로 이루어지므로 불편한 부분이 있습니다.
도커란?
리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼이다.
OS를 가상화시키던 것과 달리 컨테이너는 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 방식이다.
사용 이유
도커를 사용하면 코드를 더 빨리 전달하고, 애플리케이션 운영을 표준화하고, 코드를 원활하게 이동하고, 리소스 사용률을 높여 비용을 절감할 수 있습니다. Docker를 사용하면 어디서나 안정적으로 실행할 수 있는 단일 객체를 확보하게 된다.
장점
1. 쉽고 빠른 실행 환경 구축
2. 가볍고 빠른 실행 속도
3. 하드웨어 자원 절감
4. 공유 환경 제공
5. 쉬운 배포
단점
1. 개발 초기의 오버헤드
2. 리눅스(Linux) 친화적
도커와 vm의 차이
vm은 os 위에 os를 설치하기 때문에 자원이 많이 필요하며 유지 업데이트 관리가 힘들다는 단점이 있다.
도커는 컨테이너 기반 가상화는 Host OS 그리고 Docker 엔진 위에서 바로 동작하며 Host의 커널을 공유하고 있다.
- virtual Machine 가상화
- Hypervisor 위에 Guest OS가 구동
- 별도의 VM과 OS를 필요로 하기 때문에 자원의 비효율성(용량, 메모리)
- Container 가상화
- Docker 엔진을 통해 각 App이 OS 자원을 직접 사용 (앱 실행에 필요한 자원만 사용)
- 별도의 OS 없이 Docker 엔진 공유 (가벼움)