Docker의 개념
🌈 프로그래밍/Docker

Docker의 개념

반응형

 

최근.. 은 아니고 한 몇 달 전부터 도커 책을 통해서 공부를 했었다.

그리고 실무에서도 최근에 개발 환경 관련해서 도커 컨테이너화 시켜서 개발하고 있는게 너무 생각보다 재밌고 편하기도 해서

개념을 공부했던 내용을 업로드 해보기로 했다!

 

1장. 도커란?

1.1 가상 머신과 컨테이너

기존 가상화 기술과 도커 컨테이너의 차이

유데미 강의 PPT 이미지

  • 기존 가상화 기술은..
    • 하이퍼바이저를 이용해 여러 운영체제를 하나의 호스트에서 생성하여 사용
    • 각종 시스템 자원을 가상화 → 독립된 공간 생성 = 하이퍼바이저를 반드시 거쳐야하므로 일반 호스트에 비해 성능의 손실을 발생
    • 또한, 가상 머신을 배포하기 위해 이미지로 만들었을 때 게스트 운영체제를 위한 라이브러리, 커널을 모두 포함해야 하므로 이미지의 크기가 커진다.
    • 기존 가상화 기술은 완벽한 운영체제를 만들 수 있지만, 일반 호스트에 비해 성능 손실이 있으며 크기가 큰 가상 머신 이미지를 배포하기는 부담스러운 단점.
  • 반면 도커 컨테이너는..
    • 프로세스 단위의 격리 환경 생성 → 성능의 손실 거의 없음
    • 컨테이너 안에 앱을 구동하는데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지 용량 또한 대폭 감소
    • 따라서, 이미지로 만들어 배포하는 시간이 가상 머신에 비해 빠름.
    • 가상화된 공간을 사용할 때 성능 손실도 거의 없음.

 

1.2 도커를 시작해야하는 이유?

1.2.1 애플리케이션의 개발과 배포가 편해진다.

  • 서버를 부팅할 때 실행되는 운영체제? ⇒ “호스트 OS”
  • 도커 컨테이너는 이 “호스트 OS” 위에서 실행되는 격리된 공간이므로 이 컨테이너 내부에서 수많은 SW를 설치하고 설정 파일을 수정해도 “호스트 OS”에는 영향을 주지 않음.

 

💡 독립된 개발 환경을 보장받을 수 있다.

 

1.2.2 여러 애플리케이션의 독립성과 확장성이 높아진다.

  • 모놀리스 애플리케이션
    • 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식
    • 소규모 서비스에 적합
    • 서비스 기능이 복잡해지고 거대해지면 SW 자체 확장성과 유연성이 줄어듦.
  • 마이크로 서비스 구조
    • 여러 모듈을 독립된 형태로 구성
    • 언어에 종속되지 않고 변화에 빠른 대응이 가능
    • 컨테이너 기반 마이크로서비스는 도커 스웜 모드, 쿠버네티스 등의 컨테이너 오케스트레이션 플랫폼을 통해 사용하는 방법이 일반적.
반응형