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 |