Close

컨테이너와 가상 컴퓨터 비교

컨테이너와 VM(가상 컴퓨터)의 차이점과 각각의 인기 있는 공급자, 그리고 두 가지를 함께 사용하는 방법에 대해 알아봅니다.

Ian Buchanan 얼굴 사진
Ian Buchanan

수석 솔루션 엔지니어


컨테이너와 가상 컴퓨터는 매우 유사한 리소스 가상화 기술입니다. 가상화는 RAM, CPU, 디스크 또는 네트워킹과 같은 시스템 단일 리소스를 '가상화'하고 여러 리소스로 나타낼 수 있는 프로세스입니다. 컨테이너와 가상 컴퓨터의 주요 차이점은 가상 컴퓨터가 전체 컴퓨터를 하드웨어 계층까지 가상화하는 반면 컨테이너는 운영 체제 수준 위의 소프트웨어 계층만 가상화한다는 것입니다.

가상 컴퓨터와 컨테이너의 차이점을 보여 주는 컨테이너.

컨테이너란 무엇입니까?


컨테이너는 포함된 소프트웨어 애플리케이션을 실행하는 데 필요한 모든 종속성을 포함하는 경량 소프트웨어 패키지입니다. 종속성에는 시스템 라이브러리, 외부 타사 코드 패키지 및 기타 운영 체제 수준 애플리케이션 등이 있습니다. 컨테이너에 포함된 종속성은 운영 체제보다 높은 스택 수준에 존재합니다.

장점

  • 반복 속도
    컨테이너는 가볍고 높은 수준의 소프트웨어만 포함하기 때문에 수정 및 반복이 매우 빠릅니다.
  • 강력한 에코시스템
    대부분의 컨테이너 런타임 시스템은 사전 제작된 컨테이너의 호스팅된 공개 리포지토리를 제공합니다. 컨테이너 리포지토리에는 데이터베이스나 메시징 시스템과 같이 인기 있는 소프트웨어 애플리케이션이 많이 포함되어 있으며 즉시 다운로드하여 실행할 수 있으므로 개발 팀의 시간을 절약할 수 있습니다.

단점

  • 공유 호스트 악용
    컨테이너는 모두 운영 체제 계층 아래의 동일한 기본 하드웨어 시스템을 공유하므로, 한 컨테이너가 악용되면 해당 컨테이너에서 벗어나 공유 하드웨어에 영향을 미칠 수 있습니다. 가장 인기 있는 컨테이너 런타임에는 사전 제작된 컨테이너로 구성된 공개 리포지토리가 있습니다. 이러한 공개 이미지 중 하나를 사용하는 경우 익스플로잇이 포함되어 있거나 악의적인 공격자의 하이재킹에 취약할 수 있으므로 보안 위험이 있습니다.

인기 있는 컨테이너 공급자


코드 구축 아이콘
관련 자료

Kubernetes와 Docker 비교

세 개의 고리 아이콘
솔루션 보기

Compass를 사용하여 컴포넌트 관리

  • Docker
    Docker는 가장 인기 있고 널리 사용되는 컨테이너 런타임입니다. Docker Hub는 인기 있는 컨테이너화된 소프트웨어 애플리케이션의 거대한 공개 리포지토리입니다. Docker Hub의 컨테이너는 즉시 다운로드하여 로컬 Docker 런타임에 배포할 수 있습니다.
  • RKT
    "로켓"이라고 발음하는 RKT은 보안을 우선으로 하는 컨테이너 시스템입니다. RKT 컨테이너는 사용자가 안전하지 않은 기능을 명시적으로 사용으로 설정한 경우를 제외하고 안전하지 않은 컨테이너 기능을 허용하지 않습니다. RKT 컨테이너의 목표는 다른 컨테이너 런타임 시스템에서 발생하는 근본적인 교차 오염 악용 보안 문제를 해결하는 것입니다.
  • Linux Containers(LXC)
    Linux 컨테이너 프로젝트는 오픈 소스 Linux 컨테이너 런타임 시스템입니다. LXC는 운영 체제 수준 프로세스를 서로 분리하는 데 사용됩니다. Docker는 실제로 백그라운드에서 LXC를 사용합니다. Linux 컨테이너는 벤더 중립적인 오픈 소스 컨테이너 런타임의 제공을 목표로 합니다.
  • CRI-O
    CRI-O는 Open Container Initiative(OCI) 호환 런타임을 사용할 수 있는 Kubernetes Container Runtime Interface(CRI)를 구현한 것입니다. Docker를 Kubernetes의 런타임으로 사용하는 방법의 간단한 대안입니다.

가상 컴퓨터란 무엇입니까?


가상 컴퓨터는 CPU, 디스크 및 네트워킹 기기와 같은 저수준 하드웨어 기기의 완전한 에뮬레이션을 제공하는 강력한 가상 컴퓨터소프트웨어 패키지입니다. 가상 시스템은 에뮬레이트된 하드웨어에서 실행될 수 있도록 보완 소프트웨어 스택도 포함할 수 있습니다. 하드웨어 및 소프트웨어 패키지가 결합하여 계산 시스템의 완전한 기능을 갖춘 스냅샷을 생성합니다.

장점

  • 완벽한 격리 보안
    가상 컴퓨터는 완전 독립 실행형 시스템으로 격리되어 실행됩니다. 따라서 가상 컴퓨터는 공유된 호스트에 있는 다른 가상 컴퓨터의 악용 또는 간섭에 영향을 받지 않습니다. 개별 가상 컴퓨터는 여전히 악용되어 하이재킹될 수 있지만, 악용된 가상 컴퓨터는 격리되므로 인접한 다른 가상 컴퓨터에 영향을 줄 수 없습니다.
  • 대화형 개발
    컨테이너는 일반적으로 컨테이너를 실행하는 데 필요한 예상 종속성 및 구성을 정적으로 정의한 것입니다. 가상 컴퓨터는 조금 더 동적이기 때문에 대화형으로 개발할 수 있습니다. 가상 컴퓨터에 대한 기본 하드웨어 정의가 지정되면, 가상 컴퓨터를 베어본 컴퓨터로 취급할 수 있습니다. 가상 컴퓨터에 소프트웨어를 수동으로 설치할 수 있으며 가상 컴퓨터의 스냅샷을 통해 현재 구성 상태를 캡처할 수 있습니다. 가상 컴퓨터 스냅샷을 사용하여 가상 컴퓨터를 스냅샷 시점으로 복원하거나 해당 구성으로 추가 가상 컴퓨터를 가동할 수 있습니다.

단점

  • 반복 속도
    가상 컴퓨터는 전체 스택 시스템을 포함하기 때문에 빌드 및 다시 생성에 많은 시간이 소요됩니다. 가상 컴퓨터 스냅샷을 수정하면 다시 생성하고 가상 컴퓨터가 예상대로 동작하는지 검증하는 데 상당한 시간이 걸릴 수 있습니다.
  • 스토리지 크기 비용
    가상 컴퓨터는 스토리지 공간을 많이 차지할 수 있습니다. 크기가 몇 기가바이트까지 빠르게 커질 수 있습니다. 따라서 가상 컴퓨터 호스트 시스템에서 디스크 공간 부족 문제가 발생할 수 있습니다.

인기 있는 가상 컴퓨터 공급자

  • Virtualbox
    Virtualbox는 Oracle이 소유한 무료 오픈 소스 x86 아키텍처 에뮬레이션 시스템입니다. Virtualbox는 가상 컴퓨터 이미지를 개발하고 배포하는 데 도움이 되는 보조 도구 에코시스템을 갖춘 가장 인기 있고 인정받는 가상 컴퓨터 플랫폼 중 하나입니다.
  • VMware
    VMware는 최초의 x86 하드웨어 가상화 기술 중 하나를 기반으로 비즈니스를 구축한 상장 회사입니다. VMware는 여러 가상 컴퓨터를 배포하고 관리하는 유틸리티인 하이퍼바이저와 함께 제공됩니다. VMware는 가상 컴퓨터를 관리하기 위한 강력한 UI를 제공합니다. VMware는 지원을 제공하는 유용한 엔터프라이즈 가상 컴퓨터 옵션입니다.
  • QEMU
    QEMU는 가장 강력한 하드웨어 에뮬레이션 가상 컴퓨터 옵션으로, 일반적인 하드웨어 아키텍처를 모두 지원합니다. QEMU는 명령줄 전용 유틸리티이며, 구성이나 실행을 위한 그래픽 사용자 인터페이스를 제공하지 않습니다. 그렇기 때문에 가장 빠른 가상 컴퓨터 옵션이라고 할 수 있습니다.

어떤 옵션이 더 적합합니까?


프로젝트에 특정 하드웨어 요구사항이 있거나, 하나의 하드웨어 플랫폼에서 개발하고 있기 때문에 Windows 또는 macOS와 같은 다른 플랫폼을 대상으로 해야 하는 경우 가상 컴퓨터를 사용해야 합니다. 대부분의 다른 '소프트웨어 전용' 요구사항은 컨테이너를 사용하여 충족할 수 있습니다.

컨테이너와 가상 컴퓨터를 함께 사용하려면 어떻게 해야 합니까?


실제 사용 사례는 제한적일 수 있지만, 컨테이너와 가상 컴퓨터를 함께 사용하는 것은 전적으로 가능합니다. 고유한 하드웨어 구성을 에뮬레이트하는 가상 컴퓨터를 만든 다음, 가상 컴퓨터의 하드웨어에 운영 체제를 설치할 수 있습니다. 가상 컴퓨터를 작동하고 운영 체제를 부팅한 후에 컨테이너 런타임을 운영 체제에 설치할 수 있습니다. 여기서는 에뮬레이트된 하드웨어를 갖춘 컴퓨팅 시스템이 작동하기 때문에 컨테이너를 설치할 수 있습니다.

해당 구성의 실제 용도 중 하나는 SoC(System on Chip) 배포를 실험하는 것입니다. Raspberry Pi 또는 BeagleBone 개발 보드와 같은 인기 있는 SoC(System on Chip) 컴퓨팅 기기를 가상 컴퓨터로 에뮬레이션하여 실제 하드웨어에서 테스트하기 전에 컨테이너를 실행해 볼 수 있습니다.

그러나 대부분의 경우 두 가지 중 하나로 요구사항을 충족할 수 있습니다. 가상화 요구사항에 맞게 컨테이너 또는 가상 컴퓨터 중 하나를 선택하려면 리소스 요구사항과 장단점을 이해하는 것이 중요합니다.

Ian Buchanan
Ian Buchanan

Ian은 Java와 .NET 모두에 대한 폭 넓은 경험을 보유하고 있으며 대기업에서 애자일 방식의 전문가로 알려져 있습니다. 현재 그는 새롭게 부상하는 DevOps 문화와 지속적인 통합, 지속적인 제공 및 데이터 분석을 가능하게 하는 도구에 중점을 두고 있습니다. 자신의 경력에서 그는 라이프사이클의 모든 단계에서 엔터프라이즈 소프트웨어 개발 도구를 성공적으로 관리했습니다. 그는 생산성 개선과 탁월한 품질, 향상된 고객 만족으로 조직 차원의 프로세스를 개선했습니다. 그는 자체적인 방향과 자생적인 조직을 중시하는 다국적 팀을 구성했습니다. 언급하거나 코딩하지 않아도 Ian이 파서, 메타 프로그래밍 및 도메인별 언어를 열정으로 채우는 것을 볼 수 있습니다. @devpartisan로 Ian을 팔로우하세요.


이 문서 공유

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

DevOps 일러스트레이션

Compass 커뮤니티

장애물 극복 일러스트레이션

자습서: 컴포넌트 만들기

맵 일러스트레이션

Compass 무료로 시작하기

DevOps 뉴스레터 신청

Thank you for signing up