본문 바로가기

카테고리 없음

도커 엔진의 정의란?

도커 엔진의 정의

도커란 리눅스 컨데이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로 쉽게 사용할 수 있게 만들어진 오픈소스입니다. 요즘에 아주 인기가 많습니다. 오픈소스는 말 그대로 해석을 하면 소스 소프트웨어는 공개적으로 액세스할 수 있게 설계되어 누구나 쉽게 접근할 수 있는 장점이 있습니다. 도커는 Go 언어로 만들어졌으며, 기존에 쓰였던 가상화 개념이 아닙니다. 도커 컨테이너는 성능의 손실이 거의 없기 때에 많은 개발자들의 주목을 받고 있습니다.

일반적으로 도커라고 하면 엔진에 관련된 부분을 말합니다. 도커 엔진은 컨네이터를 생성하고 관리하는 주체로 컨네이너를 제어할 수 있을 뿐만 아니라 다양한 기능을 제공합니다. 이번 주제는 도커 개념의 컨테이너가 인기가 많은 이유와 도커의 장점을 정리해보도록 하겠습니다.

가상 머신 VS 도커 컨테이너

가상화 기술은 하이퍼바이저라는 개념을 도입해 여러 개의 OS를 생성해 사용하는 방식입니다. 여러개의 운영체제는 가상 머신이라는 단위로 구분이 되어 레드햇, CentOS, Window Server 등의 운영체제가 올라가서 사용됩니다. 하이퍼바이저에 의해 생성되고 관리되는 게스트를 게스트 OS라고 부르며, 각각의 OS 체제는 완전히 독립된 시스템으로 자원을 할당받아 사용할 수 있습니다. 가상화의 개념이 어렵다고요? 다들 집에서 사용해봤던 프로그램이 있지 않으신가요? 대표적인 가상화 툴은 바로 VMware , Virtual Box 가 대표적으로 가상화 기술로 사용할 수 있는 프로그램입니다.

 

가상화 툴로 독립된 공간을 생성하는 작업은 반드시 하이퍼바이저를 거치기 때문에 성능의 손실이 발생할 수 있으며, 운영체제를 올리기 위한 기본적인 라이브러리, 커널들을 모두 사용해야 되기 때문에, 용량 부분에서도 상당히 많이 차지하게 됩니다. 다시 말해서 가상 머신으로 운영체제를 구축하면 일반 물리서버의 운영체제에 비해서 성능이 떨어지며 가상머신 이미지를 실제 서버로 운영 및 사용하기에는 부담스럽다는 게 일반적인 평입니다.

 

하지만 도커 컨테이너는 가상화된 공간을 생성하기 위해서 격리 환경을 만들기 때문에 성능 손실이 가상화에 비해서 크게 없습니다. 컨테이너에 사용되는 커널은 호스트 커널을 공유해서 사용이 되며 컨테이너 안에는 애플리케이션을 구동하는 필요한 최소한의 라이브러리 및 필요 파일만 존재하기 때문에 용량적인 면에서 확실히 효율성이 높아지게 됩니다. 용량이 줄어듬으로써 자연스럽게 컨테이너를 배포하는 시간이 가상화에 비해서 빨라지게 되며 성능 손실이 크게 없다는 게 장점입니다. 가상화 기술은 하이퍼바이저라는 개념을 도입해 여러 개의 OS를 생성해 사용하는 방식입니다. 여러 개의 운영체제는 가상 머신이라는 단위로 구분되어 레드햇,  Window Server 등의 운영체제가 올라가서 사용됩니다. 하이퍼바이저에 의해 생성되고 관리되는 게스트를 게스트 OS라고 부르며, 각각의 OS 체제는 완전히 독립된 시스템으로 자원을 할당받아 사용할 수 있습니다. 가상화의 개념이 어렵다고요? 다들 집에서 사용해봤던 프로그램이 있지 않으신가요? 대표적인 가상화 도구는 바로 VMware Box 가 대표적으로 가상화 기술로 사용할 수 있는 프로그램입니다.
가상화 도구로 독립된 공간을 생성하는 작업은 반드시 하이퍼바이저를 거치기 때문에 성능의 손실이 발생할 수 있으며, 운영체제를 올리기 위한 기본적인 라이브러리, 커널들을 모두 사용해야 하므로, 용량 부분에서도 상당히 많이 차지하게 됩니다. 다시 말해서 가상 머신으로 운영체제를 구축하면 일반 물리 서버의 운영체제보다 성능이 떨어지며 가상머신 이미지를 실제 서버로 운영 및 사용하기에는 부담스럽다는 게 일반적인 평입니다.

하지만 도커 컨테이너는 가상화된 공간을 생성하기 위해서 격리 환경을 만들기 때문에 성능 손실이 가상화에 비해서 크게 없습니다. 컨테이너에 사용되는 커널은 호스트 커널을 공유해서 사용되며 컨테이너 안에는 애플리케이션을 구동하는 필요한 최소한의 라이브러리 및 필요 파일만 존재하기 때문에 용량적인 면에서 확실히 효율성이 높아지게 됩니다. 용량이 줄어듦으로써 자연스럽게 컨테이너를 배포하는 시간이 가상화에 비해서 빨라지게 되며 성능 손실이 크게 없다는 게 장점입니다.

도커 컨테이너가 인기가 많은 이유

개발에 필요한 테스트 과정에서 배포가 편하다.

위에서 말씀드렸다시피, 도커를 이용한 커널은 격리되어 있기 때문에 컨테이너에게 특별한 권한을 주지 않는 한 수많은 소프트웨어를 설치하고 테스트를 거치면서 설정 파일을 수정하고 삭제를 한다고 하더라도, 호스트 OS에 영향을 크게 미치지 않습니다. 여기서 호스트 OS는 일반적인 물리 서버에서 운영체계가 실행될 때의 운영체계라고 생각하시면 됩니다. 즉 자기만의 개발 환경을 보장받을 수 있어서 자유롭게 테스트를 해도 부담이 없고, 문제가 발생했더라도 테스트 과정에서 배포가 편리해서 다시 쉽게 환경을 구축할 수 있어서 개발자 입장에서는 상당히 각광받을 수밖에 없습니다.

 

무엇보다도 속다가 빠르다.

일반적인 운영체계와 달리 정말 필수적인 라이브러리, 기동 되고 운영되기 위한 기본 필요 설정 파일 등 일반 운영체계와 달리 커널을 포함하고 있지 않기 때문에 이미지 자체가 크지 않습니다. 이미지가 무겁지 않다는 말은 즉 속도가 매우 빨라진다는 장점이 있습니다. 일반적인 운영체계에서는 불필요한 라이브러리까지 포함되며 필요 없는 기초 설치 파일까지 설치가 되기 때문에 속도가 빨라짐으로써 스피드를 찾는 사용자들로써 인기가 더 높습니다.

 

애플리케이션의 독립성과 확장성이 뛰어나다.

현재 어플리케이션의 서비스들은 상당히 복잡해지고 거대하기 때문에, 자유자 제적으로 소프트웨어의 확장성과 유연성이 강한 애플리케이션을 선호하고 있습니다. 왜냐하면 문제가 발생하거나 새로운 환경에 빠르게 대응할 수 있기 때문에 어떤 환경에서도 아무렇지 않게 적응할 수 있는 특징이 있다면 당연히 인기가 많은 수밖에 없습니다. 개발에 필요한 테스트 과정에서 배포가 편하다. 위에서 말씀드렸다시피, 도커를 이용한 커널은 격리되어 있으므로 컨테이너에게 특별한 권한을 주지 않는 한 수많은 소프트웨어를 설치하고 테스트를 거치면서 설정 파일을 수정하고 삭제를 한다고 하더라도, 호스트 OS에 영향을 크게 미치지 않습니다. 여기서 호스트 OS는 일반적인 물리 서버에서 운영체계가 실행될 때의 운영체계라고 생각하시면 됩니다. 즉 자기만의 개발 환경을 보장받을 수 있어서 자유롭게 테스트를 해도 부담이 없고, 문제가 발생했더라도 테스트 과정에서 배포가 편리해서 다시 쉽게 환경을 구축할 수 있어서 개발자 처지에서는 상당히 주목받을 수밖에 없습니다.

리눅스 도커 엔진 설치 시, 유의사항

리눅스 도커 엔진 설치 시, 유의사항
도커는 다양한 운영체제를 지원합니다. 대표적으로 도커가 사용되는 운영체제는 CentOS, 우분투가 대표적으로 사용되고 있습니다. 대표적으로 소개할 수 있는 환경이 리눅스 환경이기 때문에, 리눅스 환경에서 소개를 할 까합니다. 도커 엔진을 설치하기 전에 기본적인 사항들을 먼저 확인해봐야 합니다.

최신 버전 커널을 사용하는지 확인해야 됩니다.
리눅스 커널 운영체제가 최소 3.10 버전 이상을 사용해야 도커 컨테이너를 정상적으로 사용할 수 있습니다. 리눅스 터미널 창에서 uname -r 명령어를 입력하면 현재 리눅스 운영체제에서 사용되고 있는 커널 버전을 확인할 수 있습니다.


#uname -r

3.10.0-327.13.1.e18.x86_64


64비트인지 확인해야 됩니다.

도커는 32비트에서도 지원이 가능하긴 하나, 가장 최적화된 환경은 64비트입니다. 32비트 버전은 권장드리지 않습니다.


# yum install -y yum-utils

# yum-config-manager \

--add-repo \

#https://download.docker.com/linux/centos/docker-repo 

# yum install -y docker-ce

# systemctl start docker


현재 도커 설치 방법을 잘 모르겠다면 도커에서 제공하는 스크립트 툴을 이용할 수 있습니다. 아래 명령어는 사용 가능한 최신 버전의 도커 엔진을 설치하는 명령어입니다.

# wget -q0- get.docker.com | sh

설치가 완료가 된 후 도커가 정상적으로 동작하는지 확인을 해야겠지요? docker info 명령어를 입력하면 도커가 설치된 각 종 정보들을 출력하는 걸 확인할 수 있습니다.


#docker info

Containers : 0

Running : 0

Pause : 0

Stopped : 0

Images : 0

Server Version : 18.09.2

 

docker info