Platform/Docker

도커를 활용해보자 - 도커(Docker)란?

무링요짱짱맨 2018. 12. 11. 23:09
반응형

 다양한 기술에 대해 공부를 하면서 매번 VMware을 통해 설치 및 삭제를 하자니 상당히 많은 시간이 허비가 되었습니다.


 어떻게하면 좀 더 효율적으로 공부를 할 수 있을까에 고민하던 차에,  Docker라는 플랫폼을 알게 되었습니다. Docker를 사용하면서 부터 신세계가 펼쳐지기 시작합니다. 전용 개발도구이자 서버이자 저장소인 NAS에 Docker을 올려 사용을 하면서, 이 새로운 서버관리방식으로 개발환경설치에 시간을 획기적으로 줄일 수 있었습니다.


 이장에서는 Docker의 역사와 개념, 구동원리에 대해서 간단히 설명 드리도록 하겠습니다.


Docker??

 도커는 컨테이너(Container)기반으로 하는 가상화 플랫폼입니다.

 여기서 컨테이너라 함은 말 그대로 화물선에 실어나르는 부산항 또는 인천항에 가득 쌓여 있는 컨테이너를 생각 하시면 됩니다.

 각각의 컨테이너에 격리된 물건이 존재하는 것 처럼, 도커의 컨테이너는 '격리된 공간내의 프로세스' 이라고 생각하시면 됩니다.

기존에 제가 사용했던 VMware 는 PC 또는 노트북에 설치되어 있는 호스트 OS(Windows10 같은?) 에 게스트 OS 전체를 올리는 방식입니다. 이는 단순히 OS가상화 자체는 쉽지만, 무겁기도 하고 너무 느려서(버퍼링이...) 성능상의 이슈가 발생하기도 합니다. 또한 호스트 OS와 게스트 OS 간의 네트워크간의 설정도 까다롭기 합니다.


 
(그림만 봐도 무거워 보이네요 ㄷㄷ)

 이에 반해 도커의 컨테이너의 방식은 여러가지 장점이 있습니다. 
(1)서버 하나에 컨테이너들이 독립적으로 실행(서로 영향 X)
(2)서버의 CPU 및 메모리에 대한 제한/할당 가능
(3)호스트 OS의 Port와 특정 컨테이너 Port간 Connection 용이
(4)호스트Directory 접근 가능
(5)가벼운 프로세스 처리 및 설치 삭제 용이
등등등등등...

다양한 장점을 가지고 있습니다.




 현재 개발자들이 다양한 이유로 도커를 사용하고 있는데요. 개발환경 뿐만 아니라 운영환경에서도 다양한 요구사항과 요건에 따라서 사용하고 있습니다.






물론 지금 집에있는 NAS의 전용 OS인 시놀로지(Synology)에서도 도커앱을 따로 지원 해 줄 정도이구요. 

여하튼, 도커는 컨테이너 기반의 가상화 플랫폼으로 상당한 유연성을 가지고 있다고 생각하시면 됩니다.

또하나의 중요한 도커의 개념이 있는데 바로 이미지(image)입니다.

컨테이너 안에 이미지를 집어넣는다고 생각하시면 간단한데요. 이미 많은 개발자들이 다양한 이미지를 제공하고 있습니다. 이미지에는 이미 컨테이너에서 구동할 파일 및 설정데이터 등을 가지고 있습니다.

이 파일 및 설정데이터는 실행 명령어, 기본 포트 정보 등이 있습니다.

여러개의 컨테이너를 하나의 이미지로 생성/시작 또는 (예를 들어 개발 시 DB서버를 Active-Active or Active-Standby 형태로 구성하고 싶을때, 하나의 설정된 DB이미지 두개의 컨테이너를 시작한다던지) 삭제가 가능합니다.

또한 이미지에 설정된 데이터 외 다른 설정 또는 데이터는 컨테이너에 저장됩니다.

지금까지 간단하게 도커에 대해서 알아봤습니다.

다음 장에는 도커 설치 및 컨테이너 활용방법에 대해서 적어보도록 하겠습니다.

 






 

 


반응형