다음을 통해 공유


컨테이너 및 가상 머신

적용 대상: 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이 많은 경우 시간이 오래 걸릴 수 있습니다. 컨테이너 내에서 운영 체제 파일을 업데이트하거나 업그레이드하는 것은 동일합니다.
  1. 컨테이너 이미지의 빌드 파일(Dockerfile이라고 함)을 편집하여 최신 버전의 Windows 기본 이미지를 가리킵니다.
  2. 이 새 기본 이미지를 사용하여 컨테이너 이미지를 다시 빌드합니다.
  3. 컨테이너 이미지를 컨테이너 레지스트리에 푸시합니다.
  4. 오케스트레이터를 사용하여 다시 배포합니다.
    오케스트레이터는 대규모로 이 작업을 수행하기 위한 강력한 자동화를 제공합니다. 자세한 내용은 자습서: Azure Kubernetes Service애플리케이션 업데이트를 참조하세요.
영구 스토리지 단일 VM에 대한 로컬 스토리지에 VHD(가상 하드 디스크)를 사용하거나 여러 서버에서 공유하는 스토리지에 SMB 파일 공유를 사용합니다. 단일 노드에 대한 로컬 스토리지에 Azure Disks를 사용하거나 여러 노드 또는 서버에서 공유하는 스토리지의 경우 Azure Files(SMB 공유)를 사용합니다.
부하 분산 가상 머신 부하 분산은 실행 중인 VM을 장애 조치(failover) 클러스터의 다른 서버로 이동합니다. 컨테이너 자체는 이동하지 않습니다. 대신 오케스트레이터는 클러스터 노드에서 컨테이너를 자동으로 시작하거나 중지하여 부하 및 가용성의 변경 내용을 관리할 수 있습니다.
내결함성 VM은 클러스터의 다른 서버로 장애 조치(failover)해 새 서버에서 운영 체제가 재시작될 수 있습니다. 클러스터 노드가 실패하면 클러스터 노드에서 실행되는 모든 컨테이너는 다른 클러스터 노드의 오케스트레이터에 의해 신속하게 다시 만들어집니다.
네트워킹 가상 네트워크 어댑터를 사용합니다. 가상 네트워크 어댑터의 격리된 보기를 사용하여 가상화가 약간 줄어듭니다. 호스트의 방화벽은 컨테이너와 공유되지만 리소스는 더 적습니다. 자세한 내용은 Windows 컨테이너 네트워킹을 참조하세요.