[Docker] 도커(Docker)란?[Docker] 도커(Docker)란?

Posted at 2020. 3. 10. 01:17 | Posted in Docker
반응형




발췌 : 시작하세요! 도커





■ 도커( Docker ) 란?





· 도커( Docker )는 리눅스 컨테이너에 여러 기능을 추가함으로써 

  플리케이션을 컨테이너로서 좀더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝이다.


· 도커는 GO 언어로 작성돼 있으며, 2013년 3월에 첫 번째 릴리스가 발표된 이후 지금까지 꾸준히 개발되고 있다.


· 기존에 쓰이던 가상화 방법인 가상 머신과는 달리 도커 컨테이너는 성느으이 손실이 거의 없어서

  차세대 클라우드 인프라 솔루션으로서 많은 개발자들에게 주목 받고 있다.




도커와 관련된 프로젝트는 도커 컴포즈( Docker Compose ), 레지스트리( Private Registry ), 도커 머신( Docker Machine ), Kitematic 등


여러가지가 있지만 일반적으로 도커라고 하면 도커 엔진( Docker Engine ) 혹은 도커에 관련된 모든 프로젝트를 의미한다.


보통 도커 엔진이라는 의미로 더 많이 쓰이는데 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고


다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이다.



도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 핵심이 되는 것은 도커 엔진이다.


이 때문에 도커 엔진을 사용하는 방법을 익히는 것은 도커와 관련된 모든 프로젝트를 능숙하게 다루기 위한 첫걸음이라고 봐도 무방하다.









#01. 가상 머신과 도커 컨테이너




기존의 가상화 기술은 하이바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다.


이러한 여러개의 운영체제는 가상 머신이라는 단위로 구별되고,


각 가상머신에는 Ubuntu, CentOS 등의 운영체제가 설치되어 사용된다.


하이바이저에 의해 생성되고 관리되는 운영체제는 게스트 운영체제( Guest OS ) 라고 하며,


각 게스트 운영체제는 다른 게스트 운영체제와는 완전히 독립된 공간과 시스템 자원을 할당받아 사용한다.


이러한 가상화 방식을 사용할 수 있는 대표적인 가사황 툴로 VirtualBox, VMware 등이 있다.







그러나 각종 시스템 자원을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를


반드시 거치기 때문에 일반 호스트에 비해 성능의 손실이 발생한다.


그뿐만 아니라 가상 머신은 게스트 운영체제를 사용하기 위한 라이브러리, 커널 등을 전부 포함하기 때문에 


상 머신을 배포하기 위한 이미지로 만들었을 때 이미지의 크기 또한 커진다.


즉, 가상머신은 완벽한 운영체제를 생성할 수 있다는 장점은 있지만 일반 호스트에 비해 성능 손실이 있으며,


수 기가바이트에 달하는 가상 머신 이미지를 애플리케이션으로 배포하기는 부담스럽다는 단점이 있다.




이에 비해 도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅싕 자체 기능이 chroot, 네임스페이스( namespace ), cgroup을 사용함으로써


프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없다.


컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고,


컨테이너 안에는 애플리케이션을 구동하는데 필요한 라이브러리 및 실행 파일만 존재하기 때문에


컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상머신에 비해 대폭 줄어든다.


따라서 컨테이너를 이미지로 만들어 배포하기는 시간이 가상머신에 비해 빠르며,


가상화된 공간을 사용할 때의 성능 손실도 거의 없다는 장점이 있다.










#02. 도커 엔진



01) 도커 엔진이 구동 가능한 OS



도커는 다양한 운영체제에서 사용할 수 있다.


도커는 리눅스 컨테이너를 제어하는 API를 GO언어로 구현한 libcontainer를 사용하기 때문에


대부분의 리눅스 운영체제에서 사용할 수 있다.


도커를 사용할 때 쓰는 대표적인 리눅스 운영체제로는 Ubuntu, CentOS 등이 있다.


어느 운영체제를 선택하든 상관 없지만 가능하다면 지원이 중단되지 않은 최신 버전의 운영체제 배포판을 사용하는 것이 좋다.


마이크로소프트 윈도우, 맥 OS X에서도 도커를 사용할 수 있지만


Windows10, Mac OS X 10.10.3 Yosemite 이전 버전의 운영체제를 사용한다면 도커를 사용하기 위해


가상화 공간을 별도로 생성해야 한다.


그러나 도커가 어느 운영체제에 설치되든 사용법은 거의 같다.




02) 도커 엔진의 종류 및 버전



2017년 이전의 도커 엔진은 1.12과 같이 1.x 버전으로 표기되어 왔다.


그러나 도커 엔진은 1.13을 마지막으로, 2017년 3월부터 도커 엔진은 도커 EE( Docker Enterprise Edition )와


도커 CE( Community Edition )으로 구분되어 제공되고 있으며,


버전 이름 또한 17.03-EE 또는 17.03.CE와 같이 ( 출시 년도 ) - ( 출시 월 ) - ( 도커 엔진 종류 )의 형태로 변경되어 왔다.



도커 EE는 유료로 제공되는 기업용 솔루션이며, 각종 기술 지원 및 실제 서비스 단계에서


필요한 각종 부가 기능들을 도커 엔진과 함께 제공한다.


도커 CE는 무료로 제공되는 도커 엔진으로서, 별도의 기술 지원 및 서비스를 제공하지는 않지만


도커 엔진 자체의 핵심적인 기능을 무료로 사용할 수 있다는 장점이 있다.


또한 도커 EE는 3개월마다 안정화된 버전으로서 릴리즈 되는 반면 도커 CE는 stable과 edge 버전으로 구분해


각각 3개월, 1개월 단위로 릴리즈 된다는 차이점도 있다.



도커 EE와 도커 CE는 기술 지원 및 서비스 운용을 위한 부가적인 서비스 지원 수준에서 차이가 있지만,


핵심적인 컨테이너 기술은 도커 CE에서도 동일하게 사용할 수 있다.



도커 CE의 edge 버전은 새로운 기능을 먼저 사용해 볼 수 있다는 장점이 있지만


각종 버그가 발생할 수 있기 때문에 가능하면 도커 CE의 stable 버전을 설치하는 것을 권장한다.








반응형

'Docker' 카테고리의 다른 글

[Docker] Container 다루기  (0) 2020.03.11
[Docker] Ubuntu - 도커 설치하기  (0) 2020.03.11
//