ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker (1) - 가상화 기술
    Infra/Docker 2024. 1. 24. 20:35

     

    1. 엔터프라이즈 환경에서 구동되는 다양한 서버 

    출처: 쉬운도커(데브위키) - 인프런

     

    - 서버는 일반적으로 하드웨어에서 실행 중인 소프트 웨어를 지칭한다.

    - 서버는 서버에서 어떤 소프트웨어가 실행되느냐에 따라 나눌 수 있다.

      (파일공유 소프트웨어(파일서버), RDB 소프트웨어(DB서버)

    - 서버는 이미 만들어진 소프트웨어를 다운받아 구성되거나, 소스코드로 개발된 애플리케이션 서버가 있다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 엔터프라이즈 환경에선 다양한 서버가 운영되는데, 운영방식에 따라 베어메탈,하이퍼바이저,컨테이너 형식으로 나눌 수  있다.

     > 베어메탈:  일반적으로 컴퓨터를 사서 프로그램을 실행한다. 서버 컴퓨터를 구입하고, 여러개의 소프트웨어를 구동한다.

     > 하이퍼바이저: 하나의 컴퓨터의 리소스를 공유하는 가상환경을 만들고 그 위에서 각각의 서버 소프트웨어를 운용한다.

                                하나의 가상환경은 다른 가상환경과 완벽하게 독립된 형태이다.

     > 컨테이너: 독립된 가상환경에서 서버 소프트웨어를 구동한다는 방식은 유사하지만, OS부분에서 하이퍼바이저와 차이가 있다.

     

    2. 가상화 기술이란? 

     

    - 가상화 기술이란 실제로 존재하지 않지만, 존재하는 것 처럼 보이게 하는 것이다. 

    - 대게 IT에서 가상화는 물리적인(CPU,디스크)것을 소프트웨어로 풀어내는 기술을 의미한다. 

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 물리적인 컴퓨터 1대에 가상화 기술을 통해 논리적인 컴퓨팅 환경을 조성했다.

    - 가상화 기술이 용빼는 재주가 있는게 아니므로, 리소스는 원래 서버의 리소스를 사용해야한다.

    - 즉, 진짜 컴퓨터처럼 사용할 수 있는 프로그램을 킨 것이다.

     

    출처: 쉬운도커(데브위키) - 인프런

    - 가상환경의 장점은 위와 같이 격리된 환경에서 프로세스를 실행할 수 있음에 있다.

    - 4개의 가상환경이 협력하여, 특정 애플리케이션을 서비스하고 있다고 가정해자. 

    - 이때 한 가상환경에서 큰 에러가 발생하더라도, 다른 가상환경에 영향을 주지 않는다.

    - 또한, 한 가상환경이 갑자기 트래픽이 몰려, 너무 많은 리소스를 차지하여 문제가 발생하지도 않는다.

      이는, 가상환경이 만들어질 때 최대로 사용할 수 있는 리소스가 미리 정해지기 때문이다.

    - 하드웨어의 성능이 비약적으로 증가함에 따라, 성능 좋은 서버 컴퓨터를 한 대 사서 위와같은 가상환경을 구성하는게 더 효율적이다! 

     

     

     3. 하이퍼 바이저와 컨테이너 

     

    3.1 하이퍼바이저

    출처: 쉬운도커(데브위키) - 인프런

     

    - 하이퍼 바이저는 가상환경을 조성하기 위해 설치된 프로그램들을 의미한다.

    - 가상환경을 조성하면, 원래 물리적 컴퓨터가 가지는 OS는 HOST OS, 가상환경의 OS는 GUEST OS가 된다.

    - 하이퍼 바이저를 통한 가상환경은 host os와 다른 os를 사용할 수 있다. 

    - 사용자의 요청에 따라 CPU나 메모리 등을 사용하기 위해서는 시스템 콜을 통해 OS에 커널을 거쳐 물리적인 장치에 명령을 보내야한다.

    - 이때 각 OS마다 사용하는 커널이 다르다. 커널이 다른 OS는 대화가 전혀 불가능한 외국인 3명과 같다.

    - 따라서 host os와 guest os는 다를 수 있음으로, 이 둘 사이에서 통역을 해줄 소프트웨어가 필요하고, 이 역할을 하는 것이 하이퍼 바이저이다.

    - 즉, 하이퍼 바이저는 다른 커널 간 시스템 콜을 통역하고, 호스트 컴퓨터의 리소스를 할당하여, 격리된 공간에 가상환경을 조성할 수 있도록 한다.

     

    3.2 컨테이너 가상화

     

    - 컨테이너 가상화는 하이퍼 바이저 가상화보다 더 가볍고 빠른 가상환경을 조성하도록 돕는 기술이다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 컨테이너 가상화 기술과 하이퍼 바이저의 큰 차이host os와 guest os가 다르지 않다는 점이다.

    - 모든 컨테이너는 하나의 커널을 공유하기 때문에 서로간 통역의 시간이 필요하지 않다. (오버헤드가 적다)

    - 컨테이너 가상화 기술은 리눅스 커널의 자체 격리 기술을 사용한다 (LXC) 

         -> 커널의 NameSpaceCgroups 기술을 사용한다.

             Namespaces는 리소스를 나누는 기준 단위를 제공하고, Cgroups는 프로세스가 사용하는 리소스의 사용량을 배분하는 기술이다.

     - 위 기술을 통해 각각의 격리된 공간을 만들고 이를 컨테이너라고 부른다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 커널 자체 가상화 기술을 사용자가 직접 다루기는 쉽지않다.

    - 따라서 도커와 같이 컨테이너 가상화 기술을 쉽게 이용할 수 있도록 돕는 소프트웨어를 사용하여 이용하자

    - 도커는 커널 자체 가상화 기술을 활용하도록 돕는 귀염둥이이다. (이런 소프트웨어를 컨테이너 플랫폼이라 부른다)

     

     

    4. 도커

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 도커는 컨테이너 엔진과, 컨테이너 런타임으로 이루어져있다.

    - 컨테이너 엔진사용자 요청을 받아서 컨테이너를 관리해주는 역할을 수행한다.

    - 컨테이너 런타임직접 커널과 통신하면서, 실제 격리된 공간을 만든다. 도커는 RUNC라는 컨테이너 런타임을 사용한다.

     

    *참고 컨테이너 런타임은 OCI에서 규정한 컨테이너 런타임 인테페이스 CRI표준을 구현했다고한다.

     컨테이너 기술을 사용할 때 어떤 컨테이너 런타임을 사용할지는 자유라고 한다.

     

    출처: 쉬운도커(데브위키) - 인프런

     

    - 도커에도 사용자 명령을 전달하는 클라이언트와 실제로 컨테이너를 관리하는 도커 데몬이라는 서버가 존재한다.

    - 클라이언트는 사용자의 명령을 도커 데몬에게 전달한다. 

    - 도커 데몬은 API를 제공하여, 클라이언트가 컨테이너 기술을 사용하도록 한다.

    - 도커 데몬에서 제공하는 API를 하나 하나 찾아서 요청하는 것은 매우 번거로운 일이다.

    - 따라서 도커 CLI라는 클라이언트 툴이 제공된다.

     

    참고자료:

    https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%89%AC%EC%9A%B4-%EB%8F%84%EC%BB%A4/dashboard

     

    [2024 NEW] 개발자를 위한 쉬운 도커 강의 - 인프런

    현업 개발자가 도커를 사용한 경험을 녹여낸 새로운 커리큘럼으로 기존 교재 및 강의와 차별된 강의를 제공합니다. 단순한 명령어 사용법이 아닌 도커를 왜 사용해야하는지 대한 근본적인 질문

    www.inflearn.com

     

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

    Docker (6) - 도커 볼륨  (0) 2024.01.25
    Docker (5) - 도커 네트워크  (0) 2024.01.25
    Docker (3) - 이미지 빌드  (0) 2024.01.24
    Docker(4) - 레지스트리  (0) 2024.01.24
    Docker (2) - 이미지와 컨테이너  (0) 2024.01.24
Designed by Tistory.