[docker] docker란?
등장배경
하나의 환경에서 여러가지 기술을 사용하게 되면서 호환되지 않는 버전들이 발생하게 되고 크고 작은 앱 스택 개발에 문제가 생기게 되어 해당 문제를 해결하기 위해 Docker라는 기술이 등장하게 되었다.
도커란?
간략히 설명하자면, 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 쉽게 말해서 도커는 컨테이너를 다루는 도구라고 생각하면 이해가 쉽다. 여기서 컨테이너라는 개념에 대해서 자세히 알아야 할 필요가 있다.
컨테이너?
컨테이너는 데스크탑, 기존 IT 클라우드 등 어디서나 실행할 수 있도록 애플리케이션 코드를 해당 라이브러리 및 종속 항목과 함께 패키징한 소프트웨어 실행 유닛이라고 할 수 있다. 이를 위하여 컨테이너는 일종의 운영체제 가상화를 활용하고, 이러한 가상화를 수행할 경우 프로세스를 격리하고 이러한 프로세스가 액세스할 수 있는 CPU, 메모리, 디스크의 양을 제어하기 위해OS 커널의 특성을 활용할 수 있다. 쉽게 정리하면, 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술이다.
컨테이너 VS VM
VM은 실행 중인 애플리케이션과 운영체제를 포함하여 컴퓨터와 거의 동일한 모든 기능을 수행할 수 있는 컴퓨터의 가상화된 인스턴스이다. 각각의 VM은 서로간의 존재를 알 수 없으며, 커널을 포함한 OS는 독립적으로 실행된다.
컨테이너는 별도의 격리된 환경에서 프로세스를 실행하는 개념에서 시작한다. Host 입장에서 다른 프로세스와 다를 것이 없지만 컨테이너 내부에서 Host나 다른 컨테이너의 존재를 알 수 없으므로 격리된 상태라고 할 수 있다. 보통 마이크로서비스 단위로 구성되고, 실행에 필요한 모든 것을 담고 있는 Image로 부터 생성된다.
컨테이너를 사용하면 매우 경량화된 격리된 환경을 구축할 수 있으므로 여러가지 이유로 가상화머신을 사용하는 것보다 유리한 측면이 있다. 하지만, 현재 실제 서비스에서는 두가지 기술을 모두 사용하여 운용한다.
이상 도커에 대해서 정리해 보았습니다.