티스토리 뷰

Docker/Docker 기초

도커란?

로또_ 2019. 9. 10. 18:32

Docker 정의

 

도커는 리눅스 컨테이너 기반으로 하는 오픈소스 프로젝트이며, 반가상화보다 경량화된 방식입니다(운영체제 수준의 가상화). 또한 하드웨어를 가상화하는 계층이 없습니다. 네임스페이스, 컨트롤 그룹 같은 리눅스 커널 기능을 이용해서 운영체제 위에 컨테이너들을 생성하는 것입니다. 애플리케이션 실행에 필요한 것을 하나로 모아두고 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행환경을 구축 및 운용하기 위한 오픈소스 플랫폼입니다.

 

응용 프로그램을 개발, 배포 및 실행하기 위한 개방형 플랫폼입니다.

 

 

컨테이너란?

 

host OS 상에 논리적인 구획(컨테이너)를 만들고, 애플리케이션을 작동하기 위해 필요한 라이브러리나 애플리케이션등을 하나로 모아, 별도의 서버인 것 처럼 사용할 수 있게 만드는 것. 컨테이너는 호스트 시스템의 커널을 다른 컨테이너들과 공유합니다.

Container Diagram


도커의 기본 개념

 

도커 엔진

흔히 말하는 도커는 일반적으로 도커 엔진을 의미합니다. 도커를 설치하고 실행하면 dockerd 라는 데몬 프로그램이 서버로서 실행되며, REST API, CLI(docker) 도구들이 클라이언트가 되어서 도커 데몬에게 작업을 지시합니다. 도커가 실행되는 레이어. 컨테이너, 이미지, 빌드 등을 관리하는 경량 런타임이자 도구로서, 리눅스 시스템에서 돌아가고 다음과 같이 구성되어 있습니다.

Dock Engine

  1. 호스트에서 돌아가는 도커 데몬(daemon)
  2. 도커 데몬과 통신하여 명령어를 실행하는 도커 클라이언트(CLI)
  3. 도커 데몬과 원격으로 교류하는 REST API

CLI는 도커 REST API를 사용하여 스크립트 또는 CLI 명령을 통해 도커 데몬을 제어하고 상호작용 합니다. 많은 도커 응용 프로그램이 기본 CLI명령어를 사용합니다.(도커는 Apache 2.0 오픈소스 라이센스를 사용합니다.)

 

 

도커 데몬

 

도커 데몬은 빌드, 실행, 배포(distribute) 등을 비롯하여 사용자가 도커 클라이언트에게 보낸 명령어와 API요청을 실행합니다. 도커 데몬은 호스트 머신에서 돌아가지만, 유저들이 도커 데몬과 직접적으로 접하는 경우는 없습니다.. 도커 클라이언트도 호스트 머신에서 실행되기는 하지만, 필수적으로 그렇지는 않습니다.. 도커 클라이언트는 다른 머신에 있는 동안에도 호스트 머신에서 돌아가는 도커 데몬과 소통하는 것이 가능합니다.. 또한 데몬은 도커 서비스를 관리하기 이해 다른 데몬과 통신 할 수도 있습니다.

 

 

CLI

 

도커 클라이언트는 많은 도커 사용자가 Docker와 상호 작용하는 주요 방법입니다. docker run  과 같은 명령을 사용하면 클라이언트가 이 명령을 전송하여 dockerd를 수행합니다. 도커의 UI라고 볼 수 있습니다.  유저는 도커 클라이언트에게 명령어를 전달하고, 도커 클라이언트는 받은 명령을 도커 데몬에게로 전달합니다. 도커 클라이언트는 둘이상의 데몬과 통신 할 수 있습니다.

 

 

REST API

 

도커 클라이언트와 데몬은 UNIX 소켓 또는 네트워크 인터페이스를 통해 REST API를 사용하여 통신합니다.

 

 


 

도커 아키텍처

도커는 클라이언트 - 서버 아키텍처를 사용합니다. 도커 클라이언트는 도커 데몬과 데이터를 주고 받습니다.

Docker Architecture

앞서 다뤘던 도커 데몬과 클라이언트는 특성이 동일합니다. 나머지 도커 레지스트리가 무엇인지 알아보겠습니다.

 

 

도커 레지스트리

 

도커 레지스트리 는 도커 이미지를 저장합니다. 이미지를 업로드하거나 다운로드 하는 공용 또는 개인 저장소로 도커의 배포 구성요소 입니다. 도커 허브는 누구나 사용할 수 있는 공용 레지스트리이며 도커는 기본적으로 도커 허브에서 이미지를 찾도록 구성되어 있습니다. 자신의 개인 레지스트리를 실행할 수도 있습니다. DDC(Docker Datacenter)을 사용하는 경우 DTR(Docker Trusted Registry)이 포함됩니다. docker pull 또는 docker run 명령을 사용하면 구성된 레지스트리에서 필요한 이미지를 가져옵니다. docker push 명령을 사용하면 이미지가 구성된 레지스트리로 푸시됩니다.

 

 

도커 이미지

 

도커 컨테이너를 만들기 위한(실행하기 위한) 읽기 전용 템플릿입니다. 가상머신을 생성할 때 사용하는 iso 파일과 비슷한 개념입니다. 이미지는 여러개의 계층(레이어)으로 된 바이너리 파일로 존재하며, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됩니다. 이미지는 쉽게 내려받을 수 있고, 내려받은 이미지에 계층을 더 씌워서 새로운 이미지를 만들 수도 있습니다.

 

각 이미지는 일련의 레이어로 구성되어 있으며, 하나의 이미지에 UnionFS (Union file system)을 사용하여 레이어를 결합합니다. 도커 이미지를 변경하면 새로운 레이어가 구축됩니다. 따라서 이미지 전체를 교체하거나 재구성되는 것이 아니라 해당 레이어만 추가 또는 업데이트됩니다.

 

나머지에 대한 것은 다음에알아보겠습니다.

 

 

 

 

 

 

 


출처: https://www.reimaginer.me/entry/docker-hands-on-part1

반응형