학교에서 배운 자료를 정리한 것입니다!
1) 도커란 무엇인가?
도커는 컨테이너 기반의 가상화 기술이다.
Docker는 기존의 가상화 기술과 구분하기 위해서 이미지와 컨테이너 (container)의 개념을 사용하고 있다. 이미지는 필요한 응용을 설치한 뒤에 파일형태로 만든 것이며, 컨테이너는 이미지를 실행한 상태를 말한다.
하나의 이미지를 사용해서 여러 개의 컨테이너를 만드는 것이 가능하고, Docker의 이미지는 개인 저장소인 Docker 허브(Hub)를 제공하여 이미지를 공유할 수 있다. 이러한 특징으로 인하여 이미지를 편리하게 관리하고 배포할 수 있다.
Docker의 가장 큰 특징은 하이퍼바이저와 게스트 운영체제를 사용하지 않는다는 점이다. Docker는 하이퍼바이저를 사용하지 않고 Docker 엔진을 사용하여 호스트 운영체제의 자원을 공유하는 방식을 사용하고 Docker 엔진위에 게스트 운영체제 없이 바이너리와 라이브러리만을 가지고 애플리케이션을 구동시킨다. 이러한 구조적 특징 때문에 응용 프로그램 운영에 필요한 최소한의 자원만 공유하는 것이 가능하다.
2) 이식성이란?
도커 컨테이너는 컨테이너 런타임 환경을 지원하는 모든 장치에서 실행된다. 컨테이너는 가상머신이나 베어메탈 서버 상에서 구동할 수 있다. 자체 인프라에서도 구동할 수 있고, 클라우드 상에서 구동할 수도 있다 프로그래머들은 애플리케이션을 작성해 이를 컨테이너에 담고, 애플리케이션 자체는 컨테이너에 담겨진 상태로 다양한 환경으로 옮겨질 수 있다.
3) 가상화와 도커의 차이점은?
가상화(virtualization) 기술은 고성능 컴퓨팅 시스템이 제공하는 하드웨어 컴퓨팅 자원의 이용률을 최대로 활용하기 위한 목적으로 하나의 물리 자원을 하나 이상의 가상 머신들로 추상화 시키는 기술이다.
가상화 기술의 가상화 타입 중 하이퍼바이저는 전가상화와 반가상화로 분류되어 있는 것을 볼 수 있다.
이러한 방식은 우리가 접하고 있는 Vmware의 Workstation과 ESXi 하이퍼바이저 방식을 나타낸다.
가상화 타입 중에서 도커는 하이퍼바이저 방식과는 다른 타입으로 Container-based 방식 중에 하나라고 볼 수 있다.
정리)
하이퍼바이저는 전가상화와 반가상화로 분류된다.
ex) vmware workstation, esxi 하이퍼바이저 방식
도커는 Container-based 방식
4) 컨테이너와 기존 virtual machine의 차이?
하이퍼바이저 기반의 가상화 환경에서는 물리 머신의 자원을 가상화하고 애플리케이션을 동작 시키지만
컨테이너 기반 가상화의 경우엔 이미 동작하고 있는 시스템에 가상의 컨테이너를 만들어 애플리케이션을 동작 시킨다.
각각의 컨테이너는 프로세서의 집합으로 볼 수 있기 때문에 기존의 방식보다 비교적 가벼운 편이다. 이러한 구조적 특징 때문에 속도가 뛰어나고, 자원의 소비율과 오버헤드가 적다는 장점을 가진다. 하지만 컨테이너는 운영체제에 종속적일 수밖에 없기 때문에 컨테이너마다 다른 커널을 사용할 수 없다. 하나의 물리 자원을 공유하여 고립성을 가진 여러개의 컨테이너에서 독립적인 애플리케이션이 구동 가능하다는 점에서 가상화 기술로 분류되고 있으며 흔히 “운영체제 레벨 가상화”로 구분 할 수 있다.
5) 도커의 구조
Docker 엔진을 사용하여 호스트 운영체제의 자원을 공유하는 방식을 사용하고 Docker 엔진위에 게스트 운영체제 없이 바이너리와 라이브러리만을 가지고 애플리케이션을 구동시킨다.
도커 소프트웨어는 세가지 구성 요소로 되어 있다.
소프트웨어 : dockerd 라는 Docker 데몬은 Docker 컨테이너를 관리하고 컨테이너 객체를 처리하는 프로세스이다. 데몬은 Docker Engine API를 통해 전송 된 요청을 수신하며
docker 라고하는 Docker 클라이언트 프로그램은 사용자가 Docker 데몬과 상호 작용할 수 있는 인터페이스를 제공한다.
개체 : Docker 개체로는 Docker에서 응용 프로그램을 사용하기 위한 다양한 요소가 있다.
Docker 개체의 주요 요소에는 이미지, 컨테이너 및 서비스가 있다.
Docker 컨테이너는 응용 프로그램을 실행하는 표준화되고 캡슐화된 환경으로 컨테이너는 Docker API 또는 CLI를 사용하여 관리된다.
Docker 이미지는 컨테이너를 작성하는데 사용되는 읽기 전용 템플릿이다. 이미지는 응용 프로그램을 저장하고 운송하는 데 사용됩니다.
Docker 서비스를 사용하면 컨테이너를 여러 Docker 데몬으로 확장 할 수 있다. 그 결과는 Docker API를 통해 통신하는 협력 데몬 세트 인 "swarm"으로 알려져 있다.
레지스트리 : Docker 레지스트리는 Docker 이미지의 저장소를 말한다. Docker 클라이언트는 레지스트리에 연결하여 이미지를 다운로드하여 이미지를 사용하거나 업로드 할 수 있다. 레지스트리는 공개 또는 비공개가 될 수 있으며, 두 가지 주요 공개 레지스트리는 Docker Hub와 Docker Cloud가 있다. Docker Hub는 Docker 이미지를 찾는 기본 레지스트리 이다.
6) 도커에서 말하는 이미지란?
도커 이미지란 서비스 운영에 필요한 소스 코드, 컴파일된 실행 파일, 라이브러리 등이 있는 파일 시스템과 그것이 컨테이너화될 경우 반영될 설정사항까지를 포괄한다.
도커 데몬이 어떤 저장 드라이버를 사용하는지에 따라 각 레이어로 이미지를 구성하는 방식이 다르고 이미지의 각 레이어들은 읽기만 가능하다.
즉, 컨테이너 상에서 어떠한 변경이 일어나도 해당 변경은 이미지 내의 레이어의 내용을 컨테이너 레이어로 복사한 후 이를 대상으로 이루어지기 때문에 이미지 자체에는 아무런 변화가 발생하지 않는다. 이러한 원리로 한 이미지에서 여러 컨테이너를 생성할 수 있고 특정 컨테이너가 삭제되어도 그 기반 이미지에는 아무런 영향이 없게 된다.
7) 도커에서 말하는 registry는 무엇인가?
Docker 레지스트리는 Docker 이미지의 저장소를 말한다. Docker 클라이언트는 레지스트리에 연결하여 이미지를 다운로드하여 이미지를 사용하거나 업로드 할 수 있다. 레지스트리는 공개 또는 비공개로 할 수 있으며, 공개된 기본 레지스트리는 Docker Hub로 불리며, Docker 이미지를 찾는 기본 경로 이다.
8) 도커와 하이퍼바이저의 큰 차이점?
도커는 가상화된 환경 내의 프로세스가 호스트 운영체제를 공유한다. 하이퍼바이저 등을 사용하여 가상화된 하드웨어 위에 별도의 게스트 운영체제를 올리는 기존의 가상화 기술과는 달리 도커는 기본 라이브러리, 실행 파일 등만을 가지고 호스트 운영체제를 그대로 공유하면서 컨테이너라는 격리된 실행환경을 제공한다.
참 조
- 도커 기반 호스트에 대한 디지털 포렌식 조사 기법
- 하이브리드 가상화를 이용한 대용량 데이터 분산 처리 성능 개선
- 학교 자료 정리한 것입니다~
'IT base' 카테고리의 다른 글
C드라이브 용량 정리 2가지 방법(Windows 폴더가 100GB이상?!) (2) | 2021.06.01 |
---|---|
putty, 파일질라(ftp) 접속 정보 저장 (0) | 2021.02.05 |
[윈도우 10] 외장 ODD로 CD 굽는 방법 (별도 프로그램 없이!) (1) | 2020.01.13 |
Dependency Walker (0) | 2019.11.21 |
Linux script & ssh/ftp connection (0) | 2019.08.07 |
댓글