가상화란
- 단일 컴퓨터의 HW 요소를 다수의 가상 컴퓨터로 분할 하는 기술
가상화 이전 단계
- O.S 는 특권 명령 ( privileged instruction ) 때문에 H.W System 당 하나밖에 돌아갈 수 없음
=> 특권 명령 : System 요소들과 소통할 수 있는 명령 , OS만 가능
- 가상화가 나타나기 전까진 하나의 O.S만 실행 가능했음
=> O.S가 HW에 설치된 상태(Bare-Metal)로만 운영 가능
가상화의 역사
1세대 : 완전 가상화
- 모든 System 요소가 Emulator 안에서 돌아 감
- CPU , Harddisk , Motherboard 등 모든 요소 구현해 O.S와 연동
- 매우 느림

2세대 : Paravirtualization
- GuestOS는 Hypervisor 와 통신한다.
=> O.S 와 H.W 사이 존재하는 Virtual Manager
- 속도는 1세대에 비해 향상
=> 그러나, 여전히 Emulator가 필요함 = 느림
3세대 : Hardware Virtual Machine (HVM)
- H.W에서 직접 가상화 지원
- 직접 H.W 와 통신 = 빠른 속도 ( Near-Bear-Metal )

AWS는 이미 구축된 가상화 가능한 서버의 한 부분을 할당해 주는 것
( 돌고있는 서버를 가상화해서 사용자에게 제공 )
Container
- 가상화 기술
- O.S레벨 가상화로 Process를 격리시켜 동작하는 방식
=> 기존 VM 방식은 Host O.S 위에 Guest O.S 전체를 가상화 하여 사용한 방식
- Application 실행에 필요한 Binary만 올린다.
- Host O.S가 사용하는 자원을 분리
Docker 란
- Go 언어로 작성된 Linux Container 기반 Opensource Virtual Platform 이다.
- 간단한 명령으로 Container Image 생성 가능
- Host 에 Container Image를 Download 해서 Container 실행 가능
Container Image
- Container 실행할 수 있는 실행 파일 , 설정값 을 가지고 있다.
- 상태값이 없으며 ( Stateless ) + 변하지 않는다 ( Immutable )
- 의존성 File 및 새 File 들 설치할 필요가 없다.