컨테이너 기반의 가상화 도구, 도커(Docker)

    도커는 리눅스 LXC(LinuX Containers)라는 커널 컨테이너 기술을 이용하여 만든 기술 중 하나로서, 가상머신에 비해서 가벼우며, 서비스가 해킹이 되더라도, 격리되어 원래의 서버에 영향을 미치지 않는 구조로 되어 있어서 보안상 뛰어나다. 리눅스 자원을 그대로 활용할 수 있고, 현재 구글과 아마존같은 업체에서도 도커를 지원하고 있는 사실상의 업계 표준으로 인정하고 있는 가상화 기술이다.



    참고로 도커의 핵심은 당연히 LXC이며, 이는 단일 컨트롤 호스트 당에서 여러개의 고립된 리눅스 시스템(컨테이너)들을 실행하기 위한 운영 시스템 레벨 가상화 방법이다.



    1. 컨테이너 기반의 가상화 도구, 도커(Docker)의 개요

    가. 도커(Docker)의 개념

    - 하이퍼바이저(Hypervisor) 없이 리눅스 컨테이너(Linux Container, LXC) 기술을 바탕으로 애플리케이션을 격리된 상태에서 실행하는 가상화 솔루션

    - 플랫폼에 상관없이 실행될 수 있는 애플리케이션 컨테이너를 만드는 기술

    - 리눅스 컨테이너 기술을 바탕으로 애플리케이션을 격리된 상태에서 실행하는 가상화 솔루션

    - 리눅스 컨테이너 가상화(LXC) 기술을 활용하여 애플리케이션 샌드박스를 자동생성하는 기술


    나. 도커의 특징

    • 공유 : Hypervisor처럼 애플리케이션을 각각 운영체제를 제공하는 것이 아니라 Host를 공유하는 방식
    • 격리 : 애플리케이셔이나 프로세스가 해당 컨테이너 안에서 샌드박스 처리되어 외부 용인에 영향 받는 일 없이 안전하게 구동
    다. 도커의 장점
    • 빠르고 가벼운 가상화 솔루션 : 호스트의 운영체제를 공유해 필요한 최소한의 리소스만 할당 받아 동작하는 방식, 단일 호스트에서 다중 워크로드를 구동할 수 있기 때문에 하이퍼바이저 기반 가상화에 비해 훨씬 더 가볍게 가상화 환경을 구성
    • 개발자에게 자유로운 개발 보장 : 개발 언어나 툴에 상관없이 어떠한 애플리케이션 이라도 만들 수 있으며, 도커에서 만들어진 앱은 이동성이 좋아지고 어디서나 실행될 수 있음




    2. 도커의 개념도 및 구성요소

    가. 도커의 개념도(VM과의 비교)

    - 하이퍼바이저의 자원의 비효율적 분배라는 단점을 극복하는 한편, 애플리케이션 격리라는 장점을 극대화


    나. 도커의 구성요소

    • 이미지 : 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 파일로 만든 것
    • 컨테이너 : 이미지를 실행한 상태, 여러 개의 애플리케이션을 단일 호스트에서 구동하기 위한 개념
    • LXC(Linux Containers) : 고유의 파일 시스템, 프로세스, 네트워크 공간을 가짐
    • 도커 엔진 : 사용자가 컨테이너를 생성하고 사용할 수 있도록 함
    • 도커 허브 : SaaS 기반의 서비스로 도커 서비스를 생성하고 공유할 수 있도록 함

    3. 도커의 기대효과 및 사례

    가. 도커의 기대효과

    • DevOps : 개발과 운영의 호환성 증가
    • 속도 개선 : Guest OS 계층이 없기에 더 가볍고, 빠른 성능
    • 비종속적 플랫폼 : 컨테이너는 운영체제 커널에 상관없이 실행
    • 개발환경 : 개발자에게 자유로운 개발을 할 수 있는 환경 보장
    나. 도커의 사례
    • 구글 : 지메일부터 자사의 서비스를 관리하기 위해 약 20억개 컨테이너 운영
    • MS(Microsoft) : Windows Server 2016에서 도커 적용
    • 아마존 : AWS에서 도커를 활용할 수 있게 함


    댓글

    Designed by JB FACTORY