컨테이너 및 가상 머신
적용 대상: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
이 항목에서는 컨테이너와 VM(가상 머신) 간의 몇 가지 주요 유사점 및 차이점과 각 항목을 사용하려는 경우에 대해 설명합니다. 컨테이너와 VM은 각각 용도가 있습니다. 실제로 많은 컨테이너 배포는 특히 클라우드에서 컨테이너를 실행할 때 하드웨어에서 직접 실행하지 않고 호스트 운영 체제로 VM을 사용합니다.
컨테이너에 대한 개요는 Windows 및 컨테이너참조하세요.
컨테이너 아키텍처
컨테이너는 호스트 운영 체제에서 애플리케이션을 실행하기 위한 격리된 경량 사일로입니다. 컨테이너는 호스트 운영 체제의 커널(운영 체제의 매장된 배관으로 간주될 수 있음)을 기반으로 하며, 이 다이어그램에 표시된 것처럼 사용자 모드에서 실행되는 앱 및 일부 경량 운영 체제 API 및 서비스만 포함합니다.
커널아키텍처 다이어그램
가상 머신 아키텍처
컨테이너와 달리 VM은 이 다이어그램과 같이 자체 커널을 포함하여 완전한 운영 체제를 실행합니다.
VM이 호스트 운영 체제아키텍처 다이어그램
컨테이너 및 가상 머신
다음 표에서는 이러한 보완 기술의 몇 가지 유사점과 차이점을 보여 줍니다.
특징 | 가상 머신 | 컨테이너 |
---|---|---|
격리 | 호스트 운영 체제 및 기타 VM에서 완전한 격리를 제공합니다. 이는 동일한 서버 또는 클러스터의 경쟁 회사에서 앱을 호스팅하는 것과 같이 강력한 보안 경계가 중요한 경우에 유용합니다. | 일반적으로 호스트 및 기타 컨테이너에서 간단한 격리를 제공하지만 VM만큼 강력한 보안 경계를 제공하지는 않습니다. (Hyper-V 격리 모드 사용하여 경량 VM에서 각 컨테이너를 격리하여 보안을 강화할 수 있습니다.) |
운영 체제 | 커널을 포함한 전체 운영 체제를 실행하므로 더 많은 시스템 리소스(CPU, 메모리 및 스토리지)가 필요합니다. | 운영 체제의 사용자 모드 부분을 실행하고, 더 적은 수의 시스템 리소스를 사용하여 앱에 필요한 서비스만 포함하도록 조정할 수 있습니다. |
게스트 호환성 | 가상 머신 내의 거의 모든 운영 체제를 실행합니다. | 호스트 동일한 운영 체제 버전에서 실행됩니다(Hyper-V 격리를 사용하면 경량 VM 환경에서 이전 버전의 동일한 OS를 실행할 수 있습니다). |
전개 | Windows Admin Center 또는 Hyper-V Manager를 사용하여 개별 VM 배포; PowerShell 또는 System Center Virtual Machine Manager를 사용하여 여러 VM을 배포합니다. | 명령줄을 통해 Docker를 사용하여 개별 컨테이너를 배포합니다. Azure Kubernetes Service와 같은 오케스트레이터를 사용하여 여러 컨테이너를 배포합니다. |
운영 체제 업데이트 및 업그레이드 | 각 VM에서 운영 체제 업데이트를 다운로드하고 설치합니다. 새 운영 체제 버전을 설치하려면 업그레이드하거나 완전히 새로운 VM을 만들어야 하는 경우가 많습니다. 특히 VM이 많은 경우 시간이 오래 걸릴 수 있습니다. | 컨테이너 내에서 운영 체제 파일을 업데이트하거나 업그레이드하는 것은 동일합니다.
|
영구 스토리지 | 단일 VM에 대한 로컬 스토리지에 VHD(가상 하드 디스크)를 사용하거나 여러 서버에서 공유하는 스토리지에 SMB 파일 공유를 사용합니다. | 단일 노드에 대한 로컬 스토리지에 Azure Disks를 사용하거나 여러 노드 또는 서버에서 공유하는 스토리지의 경우 Azure Files(SMB 공유)를 사용합니다. |
부하 분산 | 가상 머신 부하 분산은 실행 중인 VM을 장애 조치(failover) 클러스터의 다른 서버로 이동합니다. | 컨테이너 자체는 이동하지 않습니다. 대신 오케스트레이터는 클러스터 노드에서 컨테이너를 자동으로 시작하거나 중지하여 부하 및 가용성의 변경 내용을 관리할 수 있습니다. |
내결함성 | VM은 클러스터의 다른 서버로 장애 조치(failover)해 새 서버에서 운영 체제가 재시작될 수 있습니다. | 클러스터 노드가 실패하면 클러스터 노드에서 실행되는 모든 컨테이너는 다른 클러스터 노드의 오케스트레이터에 의해 신속하게 다시 만들어집니다. |
네트워킹 | 가상 네트워크 어댑터를 사용합니다. | 가상 네트워크 어댑터의 격리된 보기를 사용하여 가상화가 약간 줄어듭니다. 호스트의 방화벽은 컨테이너와 공유되지만 리소스는 더 적습니다. 자세한 내용은 Windows 컨테이너 네트워킹을 참조하세요. |