Docker를 사용해보기도 하고, 나름 개인적인 공부를 진행해봤지만 누군가 나에게 "Docker를 왜 사용해야해?" 라고 물었을 때 명쾌하게 답변을 내리지 못해 생각을 정리할겸 적어본다.
Docker란 Go언어로 개발된 컨테이너 기반의 오픈소스 가상화 플랫폼이다
Docker에 대한 개념을 확립하기 위해서는 우선적으로 container(컨테이너)의 의미와 이 기술이 나온 이유부터 이해할 필요가 있다.
대부분의 소프트웨어들은 정상적으로 구동하기 위해서는 OS와 Library에 의존성을 지닌다. 이 때문에 하나의 시스템 위에서 소프트웨어들을 동시에 실행하려하면 의존성 관련 문제에 부딪힐 수 있다. 하지만 하나의 서버에 하나의 소프트웨어만을 구동시키기에는 리소스, 비용 낭비가 심하다. 따라서 이러한 개별적인 소프트웨어를 위한 독립적인 환경을 제공해주는 것을 가상화라고 한다.
컨테이너는 소프트웨어의 구동에 필요한 개별적이고 독립된 환경을 제공해주는 가상화 기술을 의미한다. 가상머신(VM)과 사실상 같은 역할을 한다고 할 수 있지만, 각각의 환경들이 별도의 운영체제를 가상화하는지에 그 차이가 있다. 간단하게 Docker의 장단점과 그에 따른 사용 이유에 대해서 살펴보자.
( 여기서 사용 이유는 개발하면서 필자가 느낀 부분들이므로 지극히 개인적인 의견이 반영되어 있다는 것을 유의해주세요! )
장점
단점
사용 이유
이번에 Docker에 대한 정말 간단한 개념과 특징에 대해 살펴보았다.
다음 시간에는 Docker의 구조를 살펴보고, 이런 장단점이 어떻게 발생했는지 알아보려 한다.