Julie의 Tech 블로그

컨테이너 개념 이해 - (3) Why Docker? 본문

Tech/AWS

컨테이너 개념 이해 - (3) Why Docker?

Julie's tech 2021. 5. 12. 23:29
728x90

이전 글에서 컨테이너란 무엇인가, VM과의 차이를 살펴보며 Docker에 대해 간단히 훑었다.

이번에는 왜 도커를 사용해야하는가에 대해 살펴보고자 한다.

우선 가장 큰 이유는 Environment disparity 이다.

Docker는 이전에 살펴봤듯이 OS를 가상화하기 때문에 어떠한 머신에서도 동일한 환경을 제공해준다.

새로운 서비스를 개발할때마다 서버를 구매 및 셋팅할 필요없기 때문에 무척 편리하다.

또한 컨테이너는 각기 독립적인 환경을 제공하기 때문에 더더욱 모듈처럼 관리할 수 있다.

여기까지 제너럴하게 훑어보았으니 간단한 웹서비스를 예로 들어 좀 더 깊게 살펴보자.

심플하게 방문 히스토리를 저장하는 웹페이지를 만든다고 해보자.

이 서비스는 Front-end, back-end, Database로 구성되어있다.

우선 개발자는 dev서버에서 개발을 진행하고, 테스트를 해보며 코드를 완성해나갈 것이다.

그러다 어느정도 검증이 완료되면, 상용 서버에 올려 사람들에게 서비스를 오픈할 것이다.

여기에서 상용서버는 개발 서버에서 개발한 환경과 동일하게 구성해야할 것이다.

복잡한 서비스일 수록 여러 구성 요소들의 의존성이 높을 것이고, 그만큼 동일하게 셋팅하는 것에서 발생하는 불편함이 더 클 것이다.

(예를 들어 node.js의 버전만 달라도 장애가 발생할 수 있다.)

이러한 불편함 때문에 가상적으로 환경을 구성하는 방법도 떠올려볼 수 있다.

하지만 VM은 리소스를 각각 독립적으로 할당받아 사용하게 된다.

반면 컨테이너는 각 컨테이너별로 독립된 공간을 활용하지만, 리소스는 함께 공유하여 필요한만큼 사용하게 되어 더욱 효율적으로 구성할 수 있다.

이러한 이유에서 도커 컨테이너를 활용하는 사람들이 많아진 것이다.

도커는 일반적으로 많이 사용하는 개발 환경들을 이미지로 제공하고 있다. (Docker hub에서 확인 가능하다.)

Docker run명령어를 사용하게 되면 찾고자 하는 이미지가 로컬에 없을 경우 다운받아 실행하게 된다.

Node가 설치된 리눅스 환경을 구성하고자 할 때도 docker run node를 실행하면 가상환경이 셋팅된다.

이처럼 간단한 명령어로 가상환경을 구성하여 필요한 환경을 구성할 수 있다.

다음 편에서는 컨테이너에 대한 니즈가 증가함에 따라

여러 컨테이너들을 관리하는 기술로 떠오른 Kubernetes를 살펴보도록 하겠다

반응형