YUMSERV
article thumbnail
Published 2019. 6. 5. 01:38
Docker란 DOCKER
반응형

1. Docker의 정의


 

Docker란 2013년도에 출시한 오픈 소스 컨테이너 프로젝트입니다.

Docker는 Immutable Infrastrucer를 구현한 프로젝트라고 할 수 있습니다.

Immutable Infrastrucer란 서비스 운영환경을 이미지로 생성한 뒤에 서버에 배포하여 실행한다는 개념입니다.

Docker의 기능으로는 서버에서 여러개의 컨테이너를 생성, 실행, 저장, 배포합니다.

컨테이너 안에 서비스운영에 오픈소스 소프트웨어나, 직접 만든 프로그램등을 넣을 수 있습니다.


2. 가상머신과 도커의 차이점


기존의 가상 머신의 경우 여러개의 운영체제를 하나의 호스트에서 생성해서 사용하는 방식입니다.

여러개의 운영체제를 Guest OS라고 하며, 각 GuestOS는 호스트 OS로부터 독립된 공간과 시스템 자원을 할당받아 사용합니다. 

이런 가상머신의 대표적인 툴은 Vmware와 Hyper-V, Xen등이 있습니다. 

가상머신은 완벽한 운영체제를 생성할 수 있다는 장점이 있지만, 일반 호스트에 비해 성능손실이 있으며, 또한 가상머신의 이미지에 라이브러리와 커널등을 포함하기 때문에 이미지로 만들었을 때 이미지의 크기가 커 애플리케이션으로 배포하기에는 단점이 있습니다. 

도커 컨테이너는 기본적으로 게스트 OS를 설치하지 않으며, 리눅스의 자체 기능인 chroot, namespaces, cgroups등을 사용함으로써 서버 운영을 위한 프로그램과 라이브러리를 격리해서 설치할 수 있으며, 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용합니다. 

이렇기 때문에 이미지를 만들었을 때 이미지의 용량 또한 가상머신에 비해 대폭 줄어들게 됩니다. 


Chroot란? 파일시스템에서 루트 디렉터리를 변경하는 명령입니다. Chroot로 특정 디렉터리를 root 디렉터리로 설정하면 chroot jail이라는 환경이 생성됩니다. Chroot jail 안에서는 바깥의 파일과 디렉터리에 접근할 수 없습니다. 

※ Cgroups? CPU, 메모리, 디스크, 네트워크 자원을 할당하여 완전한 형태의 가상 공간을 제공합니다.

※ Namespaces? 프로세스 트리, 사용자 계정, 파일시스템, IPC등을 격리시켜 호스트와 별개의 공간을 만듭니다.


3. 이미지와 컨테이너 설명

도커엔진에서 기본 단위는 이미지와 컨테이너입니다.

1) 이미지

이미지는 컨테이너를 생성할 때 필요한 요소이며, 컨테이너 실행 시에 필요한 파일과 설정값을 표함하고 있는 것을 말합니다. 

(가상머신을 생성할 때 사용하는 iso파일과 비슷한 개념입니다.)

이미지는 컨테이너를 생성하고 실행될 때 읽기 전용으로 사용되며, 도커 명령어를 통해서 내려받을 수 있습니다. 

이미지의 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성되어 있습니다.


2) 컨테이너

컨테이너는 이미지를 실행한 상태이며, 변하는 값은 컨테이너에 저장됩니다. 

도커이미지에서 여러개의 컨테이너를 생성이 가능하며, 컨테이너의 상태가 바뀌거나 삭제되어도 도커 이미지는 영향을 받지 않습니다. 




반응형

'DOCKER' 카테고리의 다른 글

Docker registry 구성  (0) 2019.06.10
Docker Hub 사용하기  (0) 2019.06.09
Dockerfile 작성방법  (0) 2019.06.08
Docker 명령어  (0) 2019.06.05
Docker 설치  (0) 2019.06.05
profile

YUMSERV

@lena04301

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!