🔵 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치하는 방법이다.
🔵 격리된 환경을 얼마나 격리 시키는지의 차이
VM
🔸어플리케이션을 실행하기 위해 ① VM을 띄우고 ② 자원을 할당한 후, ③ 게스트 OS를 부팅하여 어플리케이션을 실행해야 하기 때문에 복잡하고 무겁다.
🔸VM 내부에서 실행되는 모든 것은 호스트 OS 또는 하이퍼바이저와 독립되어 있다.
도커 컨테이너
🔸어플리케이션을 실행하기 위해 호스트 OS 위에 어플리케이션의 실행 패키지인 이미지를 배포하기만 하면 된다.
🔸도커 컨테이너는 하이퍼바이저와 게스트 OS가 필요하지 않으므로 더 가볍다.
🔸도커 컨테이너에 돌아가는 어플리케이션은 같은 호스트 OS의 다른 컨테이너와 동일한 커널을 공유한다. 즉, 컨테이너 내부에서 실행되는 프로세스를 호스트 시스템에서 볼 수 있다.
👉도커 컨테이너는 호스트 OS에 올라가기 때문이다
👉 반면 VM은 게스트 OS를 따로 띄운 후 거기서 어플리케이션을 실행한다.
ex. 도커와 함께 몽고 DB 컨테이너를 실행하면 호스트의 일반 쉘을 통해 몽고 DB의 프로세스를 확인할 수 있다.
출처
인프런 [따라하며 배우는 도커와 CI환경]