virtual machine, container 조사
가상 머신은 물리적 컴퓨터의 가상적 표현이며, 게스트라고 표현하기도 합니다. 이것을 실행하는 실제 시스템을 호스트host라고 합니다.
가상 머신을 이용하면 하나의 물리적 시스템에서 OS와 App을 지닌 다수의 가상 머신들을 만들 수 있습니다. 서로 간섭하지 않도록 분리하여 씁니다.
가상머신을 관리하고 자원을 효율적으로 배분하는 역할을 하는 것이 하이퍼바이저이며, 두가지 유형으로 나뉩니다.
유형1 하이퍼바이저 = 베어메탈
실제 하드웨어 위에 직접 설치되어 운영 체제 역할을 합니다. 이 하이퍼바이저는 물리적 서버에 직접 설치되며, 그 위에서 여러 가상 머신을 관리합니다. 일반적으로 서버 환경에서 많이 사용되며, 성능과 안정성이 뛰어납니다. 예를 들어, VMware ESXi, Microsoft Hyper-V, 그리고 KVM이 대표적인 유형 1 하이퍼바이저입니다. 이들은 운영 체제 없이 하드웨어와 직접 통신하기 때문에, 자원의 효율적인 관리와 보안성이 높습니다.
유형2 하이퍼바이저 = 호스트형
기존의 운영 체제 위에서 실행되는 소프트웨어입니다. 이 하이퍼바이저는 일반적인 응용 프로그램처럼 설치되며, 운영 체제 위에서 가상 머신을 생성하고 관리합니다. 설치와 사용이 비교적 간편하지만, 운영 체제를 거쳐야 하기 때문에 자원 관리 효율성은 다소 떨어질 수 있습니다. VMware Workstation, Oracle VirtualBox, 그리고 Parallels Desktop 등이 유형 2 하이퍼바이저의 예시입니다. 주로 개발 환경이나 소규모 테스트 환경에서 사용됩니다.

참고: IBM, 위키, GPT로 크롤링한것 참고했습니다.
어플리케이션을 독립적이고 일관된 실행 환경에서 구동할 수 있도록 도와주는 가상화 기술입니다. 컨테이너는 애플리케이션과 그에 필요한 모든 라이브러리, 종속성, 그리고 설정 파일 등을 하나의 패키지로 묶어 운영 체제 상에서 독립적으로 실행되도록 합니다. 이러한 컨테이너는 운영 체제의 커널을 공유하므로, 전통적인 가상 머신보다 경량화되어 있으며, 빠른 실행이 가능하고 시스템 자원을 보다 효율적으로 사용합니다.
컨테이너의 장점
대표적인 컨테이너 기술
컨테이너와 VM은 컴퓨팅 환경을 패키징하는 두 가지 접근 방식으로서 이러한 접근 방식에서는 다양한 IT 구성 요소를 결합하여 시스템의 나머지 부분으로부터 격리합니다. 두 접근 방식의 가장 큰 차이점은 격리되는 구성 요소로, 이는 각 접근 방식의 규모와 이식성에 영향을 줄 수 있습니다.

참고: dev container 개발하기 관련 글들과 docker, kubernates에 대해 정리된 글들을 참고하였습니다.