[Docker] Container vs VM

2023. 8. 31. 15:27·DevOps/Docker

Container와 VM은 애플리케이션을 it 인프라 리소스로부터 독립적으로 만드는 기술입니다.

 

컨테이너는 애플리케이션을 구동하기 위해 필요한 설정파일, 라이브러리, 환경 설정 등이 담겨있는 패키지입니다. 애플리케이션의 이미지를 개별적인 파일 시스템 안에서 실행할 수 있습니다.

 

가상 머신은 하나의 Host OS에서 개별적인 운영체제를 실행할 수 있을 뿐만 아니라, 애플리케이션을 실행하는데 필요한 파일들이 포함된 가상 머신을 생성할 수 있습니다.(Host OS와 분리된 Guest OS 환경에서 개발 및 테스트 진행)

 

이들의 차이점을 파악하고 Container 기반 기술인 Docker의 장점을 알아보려고 합니다. 

 

VM (Virtual Machine)

  • 가상 머신은 물리적인 서버 위에서 Hypervisor(VirtualBox, VMware)를 통해 여러 개의 가상 환경을 생성
  • 독립적 운영체제(OS) 및 가상 하드웨어를 가지고, 이로 인해 물리적인 서버 위에서 여러 운영체제 실행 가능
  • VM은 독립적인 운영체제와 파일 시스템을 가지므로, 한 VM에서 발생하는 문제가 다른 VM에 영향을 미치지 않습니다.(격리성, 안정성 보장)
  • 한 운영체제 위에서 동일한 애플리케이션을 각각의 고립된 환경에서 구동하기 위해서는 2개의 Virtual Machine 필요
  • VM을 사용하면 VM 내에 운영체제를 포함하고 있기 때문에 굉장히 무겁고 시작하는데도 오래 걸리게 됩니다.

Container

  • 하드웨어에 설치된 운영체제(Host OS)에서 Container Engine이라는 소프트웨어를 설치하면, 개별적인 컨테이너를 만들어서 각각의 애플리케이션을 고립된 환경에서 구동할 수 있게 해 줍니다.
  • VM은 운영체제를 포함하지만, Container는 운영체제를 포함하지 않습니다. 대신 Container Engine이 Host OS에 접근하여 필요한 것들을 처리하는 방식입니다.
  • 따라서, OS가 포함된 VM보다 더 빠르고 효율적인 실행 환경과 확장을 제공해 줍니다.

컨테이너는 하나의 소프트웨어 유닛으로, 컨테이너 안에 Application, dependecies, System tools를 하나로 묶어 다른 서버나 다른 pc에서 쉽게 배포하고 안정적으로 구동할 수 있게 해 줍니다. 예를 들어, app.js 같은 파일을 외부 서버에 배포하려면 npm과 같은 외부 라이브러리나 dependencies, config 같은 환경 설정을 일일이 해줘야합니다. 

 

개발자가 일일히 본인 PC에 이러한 설정들을 해주기 번거롭기도 하고 본인 PC에서는 애플리케이션 구동이 잘 되지만, 웹 서버에서는 안 되는 사례들이 있을 수 있습니다. 이러한 문제점을 한 번에 해결해 주는 기술이 바로 Container 기반 기술인 docker입니다. Container가 있기에 앞서 설명드린 번거로움을 없앨 수 있을 뿐만 아니라 Docker Engine을 통해 가볍고 빠르게 애플리케이션을 구동할 수 있게 되었습니다.

 

다음시간에는 Docker 사용 방법과 명령어, Dockerfile, Docker-compose를 이용해 Springboot, Mysql을 연동하는 과정에 대해 포스팅하겠습니다.

 

<참고 자료>

https://aws.amazon.com/ko/compare/the-difference-between-containers-and-virtual-machines/

 

컨테이너와 VM 비교 - 배포 기술 간의 차이점 - AWS

컨테이너와 가상 머신을 사용하면 여러 환경에서 실행할 수 있도록 애플리케이션을 완전히 격리할 수 있습니다. 컨테이너와 가상 머신은 기본 인프라를 가상화하거나 추상화하므로 사용자가

aws.amazon.com

 

저작자표시 비영리 변경금지 (새창열림)

'DevOps > Docker' 카테고리의 다른 글

[Docker] Dockerfile을 이용해 SpringApplication 빌드 및 실행  (0) 2023.09.14
[Docker] Docker-Compose를 사용하여 Springboot와 ELK stack 연동  (0) 2023.09.04
[Docker] Docker-Compose를 사용하여 Springboot, Mysql 연동  (0) 2023.08.31
[Docker] Docker, Docker-Compose, Dockerfile  (0) 2023.08.31
Docker  (0) 2022.10.04
'DevOps/Docker' 카테고리의 다른 글
  • [Docker] Docker-Compose를 사용하여 Springboot와 ELK stack 연동
  • [Docker] Docker-Compose를 사용하여 Springboot, Mysql 연동
  • [Docker] Docker, Docker-Compose, Dockerfile
  • Docker
SeungbeomKim
SeungbeomKim
[IT(PS, CS, SW, etc.) 지식 기록] Github : https://github.com/daily1313/
  • SeungbeomKim
    개발 블로그
    SeungbeomKim
  • 전체
    오늘
    어제
    • 분류 전체보기 (392) N
      • 일상 (33)
        • 여행 (17)
        • 회고록 (9)
        • 리뷰 (7)
      • PS (138)
        • 그리디 알고리즘[Greedy] (25)
        • 정렬 알고리즘[Sort] (18)
        • 문자열 알고리즘[String] (14)
        • 동적 계획 알고리즘[DP] (17)
        • 깊이 우선 탐색, 너비 우선 탐색[DFS, BFS.. (34)
        • 재귀[Recursion] (2)
        • 백트래킹[Backtracking] (5)
        • 브루트포스 알고리즘[Bruteforce] (16)
        • 자료 구조[Data Structure] (4)
        • 분할 정복 알고리즘[Divide & Conquer.. (3)
      • CS (26) N
      • Network (11)
      • Database (8)
        • Elasticsearch (3)
      • Linux (2)
      • JavaScript (4)
        • AngularJS (1)
      • Java (5) N
        • Effective Java (7)
        • Java Concept (20)
        • Spring (61)
        • Design Pattern (3)
      • Python (2)
      • Vscode (1)
      • DevOps (43)
        • AWS (27)
        • Git (7)
        • Docker (6)
        • Nginx (1)
      • 자격증 (10)
        • SQL (4)
      • 사이드 프로젝트 (3)
        • MatJido (3)
      • 기타 (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 소개
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    정보처리기사
    Effective Java
    Spring
    dfs
    Wi-Fi
    다이나믹 프로그래밍
    메타코딩
    컴퓨터구조
    정보처리기사 필기
    AWS
    docker
    springboot
    일본여행
    BFS
    dp
    정보처리기사 실기
    백트래킹
    이펙티브 자바
    너비 우선 탐색
    sqld
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
SeungbeomKim
[Docker] Container vs VM
상단으로

티스토리툴바