*VM과 컨테이너 차이

- VM: H/W 가상화/추상화

- 컨테이너: OS 가상화/추상화


*컨테이너의 특징:
- 호스트와 어플리케이션을 분리 : OS 레벨 가상화

- 적은 시스템 리소스와 디스크 공간 소비

- 리소스 사용에 유연성과 효율성 제공

- 가상머신과 달리 개별적인 커널을 갖지 않음


- 네트워크 가상화 => NV(VxLAN), SDN... 

- 스토리지 가상화 => Object File System

OS 가상화(Container) = 네트워크 가상화 + 스토리지 가상화


*컨테이너 기반 기술

- Cgroup 리소스에 대한 제한과 우선순위를 제어

- 네임스페이스: 어플리케이션에 대한 격리 환경을 제공


*H/W, VM는 라이프사이클이 긴 편...


*컨테이너 : 가장 짧은 라이프사이클

컨테이너는 쓰고 바로 지우고 반복(배포가 수 초 단위...속도가 빠름)

DB Data는 지워지면 안되니까...분리해서 사용하되, Stateless 환경처럼 사용(DB 삭제/생성 반복 - 볼륨Volume을 끼우고 빼고...)



* 마이크로서비스 : 

어플리케이션의 모듈화가 아닌 네트워크 분리를 통해 완전히 독립적인 어플리케이션으로 동작하게 만든다.


가상화를 통해 동일 서브넷에 구성하더라도 통신이 어려울 수 있다.

물리적으로는 분리되어 있기 때문...(IP는 사설을 사용할 수 밖에 없음)

따라서 네트워크 가상화 (ex: VnLAN)를 통해 이 둘을 묶어준다...


*DEVOPS : 

"빨리 개발하고 빨리 배포하겠다"하는 스타트업, 중소기업 도입...





* 가상머신과 컨테이너 차이점 : 

 가상머신(VMs)

 컨테이너

 하드웨어 수준의 가상화

운영체제 가상화 

 커널 공유 vs 하이퍼바이저 사용

리소스 사용이 높다 

가상머신보다 리소스 사용이 적다 

프로비저닝이 느리다

거의 리얼타임 프로비저닝과 확장성을 제공 

다양한 어플리케이션 실행 가능 

동일 커널 기반의 서비스만 구성 가능 

제한된 성능

 네이티브 성능

가상머신 간 완전한 격리로 인한 높은 보안성 제공 

프로세스 수준의 격리로 가상머신보단 보안 수준이 낮다 


* 컨테이너 한계점:

- Scale Out은 동일 Docker 호스트에서만 가능하다
- Docker에서는 node 확장에 관여하지 않는다.

Docker를 구성하는 호스트가 VM위에 올라가 있다.

Docker Host는 커널만 있으면 된다!


Atomic Host(500MB까지 제공)

CoreOS(약 500MB)

VmWARE photum


Docker는 이동성에 용이.

이미지로 만들어 배포 용이(재사용성)





*Docker가 제공하는 지원기술 :


- swarm : docker의 클러스터 솔루션

- compose : 여러 컨테이너로 구성된 어플리케이션 생성과 실행 도구

- 머신 : Docker 호스트 설치와 구성 도구

- Docker Trusted Registry: Docker 이미지 저장과 관리에 대한 온프리마이스 도구

- 네트워크: 여러 호스트간 컨테이너 통신을 지원

- 서비스 디스커버리 : 다른 서비스들을 찾아주는 도구

- 오케스트레이션과 클러스터 관리 : 시스템 모니터링과 관리

+ Recent posts