티스토리 뷰

반응형

도커(Docker)

  • 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트
  • Go 언어로 작성됨

1. 가상 머신과 도커 컨테이너

  • 가상머신
    • 하이퍼바이저를 이용해 여러 개의 운영체제(가상 머신이라는 단위로 구분)를 하나의 호스트에서 생성해 사용하는 방식
    • 게스트 운영체제(Guest os) : 하이퍼바이저에 의해 생성되고 관리되는 운영체제
    • 각 게스트 운영체제는 다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당받아 사용한다
    • 장점
      • 완벽한 운영체제를 생성할 수 있다
    • 단점
      • 일반 호스트에 비해 성능의 손실이 발생한다
      • 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함하기 때문에 이미지의 크기가 커서 배포하기 부담스럽다
  • 도커 컨테이너
    • 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스(namespace), cgroup을 사용함으로써 프로세스 단위의 격리환경을 만들기 때문에 성능 손실이 거의 없다
    • 호스트의 커널을 공유해서 사용하고 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재한다
    • 장점
      • 컨테이너를 이미지로 만들어 배포하는 시간이 가상머신에 비해 빠르다
      • 가상화된 공간을 사용할 때의 성능 손실도 거의 없다

2. 도커를 시작해야하는 이유

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

    • 호스트 OS와 독립된 개발 환경을 보장받을 수 있다
    • 서비스를 개발했을 때 사용했던 환경을 다른 서버에서도 컨테이너로서 똑같이 복제할 수 있기 때문에 개발/운영 환경의 통합이 가능해진다
    • 도커는 커널을 포함하고 있지 않아 이미지의 크기가 그다지 크지 않고
    • 이미지 내용을 레이어 단위로 구성하며 중복되는 레이어를 재사용할 수 있어서 애플리케이션의 배포 속도가 매우 빨라진다
  • 여러 애플리케이션의 독립성과 확장성이 높이진다

    • 모놀리스(Monolith) 구조
      • 소프트웨어의 여러 모듈이 상호 작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식
      • 소규모 서비스에 적합, 서브시의 기능이 복잡해지고 거대해질수록 확장성과 유연성이 줄어든다
    • 마이크로 서비스(Micro-service) 구조
      • 여러 모듈을 독립된 형태로 구성하기 때문에 언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 관리가 쉬워진다

3. 도커 설치하기

  • 도커 mac os 버전은 xhyve 기술을 이용해 리눅스 커널 기능과 도커 엔진 환경을 구성한다 

 

* 더 찾아볼것

- hypervisor

- chroot, 네임스페이스, cgroup

- xhyve

반응형

'study > 시작하세요! 도커 쿠버네티스' 카테고리의 다른 글

05. 쿠버네티스  (0) 2021.07.26
02. 도커 엔진  (0) 2021.07.22
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함