-
Docker :: Container / Image / VMPlatform/Cloud 2020. 7. 10. 13:45
도커는 환경구성 가상화 플랫폼이다.
시스템 개발과정 중에 환경구성은 구현기능의 근간이 된다.
하지만, 무턱대고 설치를 하다보면 서로 충돌이 나거나 병목현상을 일으키기도 한다.
( Port 나 메모리 등 여러이유가 있다. )
하지만 해당문제는 설치된 패키지의 버전별로도 상이하여 개발자들이 이를 다 파악하거나 인지하기 어렵다.
심지어 일련과정의 세부항목별로 필요한 패키지가 서로 충돌되는 경우도 있다.
도커는 이러한 문제를 환경별 관리를 통해 해결한다.
Docker의 개념 중 근간인 Container란 명칭도 이와 관계있다.
우선 도커는 환경구성별로 Container라 부르며, 컨테이너의 실행시킨 상태를 이미지( image ) 라 부른다.
개별 컨테이너나 이미지는 도커환경에서 이동이 가능하다.
주로 개발자 환경구성을 나눌때 사용되고 운영적인 측면에서는 클라우드환경이나 파이프라인 구축분야에서 사용된다.
도커 이미지는 서로간의 소통( 통신 )이 가능하고 하나의 서버를 다용도로 사용하기 용이하다.
도커의 특징 중 가장 기억에 남는것은 커널에 의존적이다. 커널은 OS의 주요파트( System Core ) 부분이다.
도커의 버전별로 커널에 대한 의존성이 있어서 자신의 서버 OS, 즉 커널버전을 지원하는 도커를 사용해야한다.
또한 경량화가 필요한 경우, Dockerfile 에 패키지설치 셋팅을 해두면 상대적으로 관리하기 용이하다.
( 이미지는 이미 패키지를 설치한 상태이므로 경우에 따라 무거워질 수 있다. G-btye 단까지 올라가기도 한다. )
결과적으로 커널에 의존적이지만 개별환경관리의 안정성과 시스템이미지화의 보안성이 도커를 사용하는 이유이다.
다음으로 도커와 VM( Virtual Machine ) 의 비교를 통해 클라우드 구축방식을 알아보자.
Docker vs VM 도커는 앞서 말한 것과 같이 단일서버 OS 상에 여러 환경을 구성하여 클라우딩한다.
반면 VM은 서버인프라를 직접 분할한다. 이는 하이퍼바이저( Hypervisor )라는 VM의 주요기술을 통해 가능해진다.
하이퍼바이저는 서버인프라를 관리하여 가상의 서버 또는 서버의 한부분으로 나누어 관리할 수 있게한다.
이는 운영서버 유지보수중 Scale Out 방식에 도입되는 부분이다. 서버자원이 부족할 경우 새로운 인프라를 추가하여 여러 시스템의 자원을 공유하므로 자유자재의 VM 이미지를 실현할 수 있다. Scale Out 은 최신인프라가 아니여도 괜찮기에 서버증설 시 Scale Up에 비해 비용이 절감되는 전략이 된다. 이것이 VM방식을 채택하는 이유이다. 또한 인프라부분부터 나누므로 각 이미지별 OS를 다양하게 구성할 수 있다.
( Scale Up은 최신 인프라로 대체하는 방식이다. 최근 하드웨어 성능발전이 저하되여, 소프트웨어 발전으로 대체되고 있다. 이는 Scale Out이 더욱 중요하게 된 계기이다. )
"자원의 분할 vs 환경의 분할"이 VM과 도커의 탄생이유이자 근본적인 차이점이다.
이를 인지하면 이후 목적에 따라 플랫폼을 선정하는 기준이 된다.
https://www.docker.com/resources/what-container
What is a Container? | Docker
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. Learn more.
www.docker.com
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
초보를 위한 도커 안내서 - 도커란 무엇인가?
도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이
subicura.com