Docker는 가상화 기술로, 가상화 컨테이너에 애플리케이션 배포를 자동화 시켜주는 오픈소스 엔진이다. 즉, 가상환경인 컨테이너 위에 애플리케이션 배포엔진을 더하여 사용자가 코드를 언제 어디서나 빠르고 가볍게 실행 할 수 있도록 도와준다. Docker를 통해 EC2에 배포가 가능하다.
Hypervisor는 물리적인 서버에서 하나 이상의 운영체제가 돌아간다. OS 위에 다른 OS가 가상으로 돌아간다고 보면 된다. 이러한 가상화의 장점은 물리적 서버의 리소스를 더 효율적으로 사용할 수 있다는 것이다.
그러나 너무 무겁고 부팅이 길어져서 리소스를 많이 차지한다는 단점이 있다.
Container 가상화 기술은 Hypervisor와 다르게 OS 위에 유저 공간을 따로 만들어 실행한다. 완전히 독립적인 OS가 아닌 , 독립적인 유저 공간을 가상화 한다.
하나의 호스트 서버에서 독립적인 유저 공간 인스턴스를 가상적으로 실행하여, 훨씬 가볍고 빠르다.
Docker 이미지를 통해 어디서든 쉽고 빠르게 test 환경,sandbox 환경 및 production 배포가 가능하다. 따라서 최근에 많이 사용되는 MSA(Micro Service Architechture)와 CI/CD에 아주 잘 어울리는 가상화 기술로 인기가 많다.
그러나 운영체제가 전혀 다를 경우 실행을 시킬 수 없다는 단점이 있다.
Docker는 크게 4가지 부분으로 되어 있다.
Docker client 와 server (server는 docker engine으로 불리기도 한다)
Docker 이미지
Docker registries
Docker containers
Docker Compose And Swarm