Docker

[Docker] 도커, 컨테이너, Virtual Machine과 차이

sol-hee 2022. 4. 24. 22:47

Docker 란?

  • 컨테이너를 만들고 관리하는 컨테이너 관련 툴

Container

  • Standardized unit of software
  • code를 실행하기 위한 code, dependency 의 패키지

Idea

  • "누가" 실행하던지, "어디서" 실행하던지 상관없이 코드는 똑같은 환경에서 실행이 되어야한다.
    • 개발환경, 프로덕션 환경 관련 없이.
    • 팀과, 회사와 관련 없이
    • 내 로컬 환경의 프로젝트별 종속성 관리라던지

Virtual Machines 과의 차이

Virtual Machines 사용 시 문제점

  • 여러 버츄얼 머신에서 발생하는 오버헤드
  • 새 프로젝트를 진행할 때 매번 새설치
  • 메모리, CPU 등 하드 드라이브 공간 낭비
  • 동일하게 복제되는 많은 것들이 존재
    • 운영체제
    • Virtual Machine 시스템에 필요한 파일들

장점

  • 분리된 환경
  • 환경별 구성 가능
  • 안정적 공유, 재생산 가능

단점

  • 중복 복제, 낭비되는 공간
  • 호스트 시스템 위여서 퍼포먼스가 좋지 않음
  • 이러한 버츄얼 머신이 여러 개일 경우 성능 점점 더 저하
  • 재생산, 공유가 가능하지만 원하는 모든 시스템에 그 버츄얼 머신을 설정해야함
    • 정확히 동일한 방식으로 구성해야하기 때문에 까다로움
    • 공유할 수 있는 단일 구성 파일이 없음
    • 프로덕션 환경에서 버츄얼 머신과 동일한 방식으로 프로덕션 머신을 구성해야함
      • 혹은 프로덕션 머신에서 버츄얼 머신을 실행해도되지만, 너무나 성능이 낭비됨

그럼, Docker는?

  • 하나의 머신에 여러개의 머신을 설치하지 않음
  • 운영체제가 기본적으로 내재하고 있거나 컨테이너 에뮬레이트를 지원하는 내장 컨테이너를 활용, 도커가 이것을 작동하도록 처리
    • 에뮬레이터(Emulator) : 한 시스템에서 다른 시스템을 복제
  • 도커 엔진 실행
    • 도커 설치될때 설정됨
      • 실행된 도커 엔진을 기반으로 하여 컨테이너 가동
    • 하나의 도구
  • 이 위에 격리된 컨테이너들이 올라감
  • 부풀려진 운영체제, 추가 툴 설치되지 않음
  • 컨테이너 안에 작은 운영체제 레이어가 있을 수 있지만 버츄얼 머신에 비해서는 매우 작다.
  • 구성파일을 통해서 컨테이너를 구성, 이미지 빌드 가능

정리

  Docker Container Virtual Machines
영향 및 성능 - OS에 적은 영향
- 빠르다
- 디스크 공간 사용이 적다
- OS에 큰 영향
- 느리다
- 디스크 공간 사용량이 높다
공유성 Sharing, re-building, distribution 이 쉽다. Sharing, re-building, distribution 가능하지만, 도커 컨테이너보다 과정이 어렵다.
캡슐성 - 전체 머신을 캡슐화하지 않고, "앱과 환경"을 캡슐화한다. - "전체 머신"을 캡슐화한다.