Joonas' Note

Joonas' Note

[번역] Docker - OpenStack (1/4) 본문

개발/Docker

[번역] Docker - OpenStack (1/4)

2018. 10. 29. 22:49 joonas

    원문: https://wiki.openstack.org/wiki/Docker

    [번역] Docker - OpenStack (1/4)

    [번역] Docker - OpenStack (2/4)

    [번역] Docker - OpenStack (3/4)

    [번역] Docker - OpenStack (4/4)

    1. 개요

    도커 드라이버는 오픈스택의 Nova Compute를 위한 하이퍼바이저 드라이버입니다. 하바나 릴리즈 버전에서 소개된 적이 있지만, 아이스하우스와 주노 릴리즈 버전에서는 볼 수 없었습니다. Being out-of-tree has allowed the driver to reach maturity and feature-parity faster than would be possible should it have remained in-tree. 킬로 릴리즈 버전부터는 Nova의 주 드라이버가 될 수 있을 거라 기대됩니다.

    도커(Docker)는 꽤 포터블(portable)하고, 자급 자족(self-sufficient)인 컨테이너 애플리케이션들을 자동으로 배포할 수 있도록 하는 오픈 소스 엔진입니다. 여기서는 하드웨어, 언어, 프레임워크, 패키징 시스템 그리고 호스팅 프로바이더와는 독립적인 컨테이너들을 말합니다.

    도커는 프로세스를 격리된 상태로 실행하는 경량 솔루션을 제공하는 고급 API로 리눅스 컨테이너를 관리할 수 있게 합니다. 이는 안전하고 반복될 수 있는 환경에서 소프트웨어 배포를 자동화하는 방법을 제공합니다. 도커 컨테이너에는 모든 의존성(바이너리 파일, 라이브러리, 설정 파일, 스크립트, 가상환경, jars, gems, tarballs 등)과 함께 소프트웨어 구성 요소가 포함되어 있습니다. 도커는 cgroups과 aufs 기능을 지원하는 x64 리눅스 커널에서 실행될 수 있습니다.

    도커는 싱글 머신에서 여러 컨테이너들을 관리할 수 있도록 하는 한 가지 방법입니다. 하지만 Nova에서 사용된다면 더 강해질 수 있습니다. 이제, 수백 개의 컨테이너들을 관리하는 여러 호스트에서 관리가 가능해지니까요. 지금 도커 프로젝트는 오픈스택 전체에 호환되는 것을 목표로 하고 있습니다.

    컨테이너가 가상머신을 대체하는 것이 목표가 아닙니다. 컨테이너가 특정한 사용 사례들에서 더 좋다는 점으로 가상머신을 보완할 수 있습니다.

    1.1. 다른 컨테이너 기술들과 달리 도커만의 장점은 무엇일까요?

    도커는 libvirt로 관리해야 할 만큼 일반적이지 않은 고수준의 컨테이너 및 파일 시스템 기술들의 장점을 활용합니다.

    * 프로세스 수준의 API: 도커는 로깅이나 직접적인 상호작용을 위해 각 컨테이너에서 실행되는 프로세스들의 표준 입력과 출력들을 수집합니다. 그래서 각자의 환경과 libvirt의 추상화와는 잘 맞지 않는 다른 process-oriented primitive들을 설정할 수 있습니다.

    * 파일 시스템  수준의 Advanced change control: Every change made on the filesystem is managed through a set of layers which can be snapshotted, rolled back, diff-ed etc.

    * 이미지 휴대성: 모든 도커 컨테이너는 어떤 상태를 선택적으로 커밋한 이미지이며, 중앙 이미지 레지스트리를 통해서 공유될 수 있습니다. 도커 이미지는 인프라 전반에 걸쳐 옮기기 쉽게 설계되었으므로, 하이브리드 클라우드 시나리오에 아주 적합한 빌딩 블록입니다.

    * Build facility: 도커는 애플리케이션의 소스 코드에서 컨테이너를 자동으로 조립할 수 있습니다. 이를 통해 개발자는 개발 워크플로우의 일부인 OpenStack 클러스터로 페이로드를 손쉽게 배포할 수 있습니다.

    1.2. Nova 하이버바이저는 내부적으로 어떻게 잘 작동하고 있는거죠?

    Nova 드라이버에는 Unix 소켓을 통해 도커 내부의 Rest API와 통신하는 작은 HTTP 클라이언트가 내장되어 있습니다. Nova 드라이버는 HTTP API를 사용하여 컨테이너를 제어하고 그에 대한 정보를 가져옵니다.

    드라이버가 오픈스택의 이미지 서비스(글랜스; Glance)에서 이미지들을 가져오고, 도커 파일 시스템으로 이미지들을 로드합니다.  반대로 도커에 있는 이미지들을 글랜스(Glance)로 보내고 싶다면, 'docker save' 명령어를 사용하면 됩니다.

    오래된 버전의 Nova 드라이버는 [http://docs.openstack.org/developer/glance/ Glance]로 프록시하려면 실행중인 프라이빗 도커 레지스트리가 필요하지만, 최신 버전은 그러지 않아도 됩니다.


    [Docker-under-the-hood.png]




    Comments