기타

[도커/Docker] Docker, Docker compose란?

F12:) 2023. 8. 24. 22:29

오늘은 Docker와 Docker compose에 대한 간단한 개념에 대해서 작성해보도록 하겠습니다.


1. 도커란?

우리는 종종 개발할 때, 나는 되지만, 상대방은 안 되는 경우를 종종 볼 수 있습니다. 이는 개발환경이 각기 다르기 때문입니다. 예를 들어 내가 사용하는 자바 버전이 11이기 때문에 스프링을 2.x 대로 사용하지만, 같이 협업하는 사람이 자바 버전을 17을 사용하여 스프링을 3점대로 사용한다면 버전이 맞지 않아 오류가 발생할 수 있죠.

내 개발환경에서만 된다고 해서, 내 컴퓨터를 사용자에게 제공할 수 없으니...

 

도커는 이러한 경우를 해결해줄 수 있습니다.

도커 만세!!

 

DOcker에서는 내 컴퓨터에서 개발하고, 그것을 이미지로 만들어 배포한다면 제 이미지를 다운받아 사용할 때 제 컴퓨터에서의 환경과 동일한 환경이 세팅되어 사용자가 사용할 수 있게 됩니다. 

(간단한 설명이니, 참고만 해주세요!!)

 


2. 도커와 가상환경의 차이

도커를 공부하다보면, 항상 도커와 가상머신(Virtual Machine)의 비교를 빼놓고는 얘기할 수 없습니다. 우리가 자주 볼 수 있는 아래의 사진을 통해서 이해해봅시다.

도커                                                                                                          가상 머신(VM)

도커는 단순히 도커 엔진이라는 일종의 서버 위에서 여러가지 Application들을 작동시킨다고 생각할 수 있습니다. 보시는 그림과 같이, 도커에서는 보통 가상머신보다 더 많은 서비스들을 한번에 띄울 수 있습니다. 그만큼 가상머신보다 경량화되었다고도 볼 수 있죠. 또한 독립적인 OS를 사용하지 않을 수 있다는 것도 가상머신과 대비해서 큰 장점이 될 수 있습니다.

 

하지만 도커는 Host OS 위에서 돌아가는 것이기 때문에, 호스트의 환경에 영향을 받는다는 단점이 존재했습니다.

실제로 지금 진행 중인 프로젝트에서 컨테이너가 무거워 로컬에서 서버가 안돌아가는...

 

 

이 글을 읽으면서 그렇구나~만 했는데 실제로 영향을 받는 날이 올 줄이야..

 


3. Docker compose

이 개념을 간단하게 설명하기 위해서는 컨테이너의 개념을 이해하면 좋을 것 같습니다. Docker Container는 소프트웨어를 실행하기 위한 독립적이고 분리된 공간입니다. 보통의 서비스는 이 컨테이너 여러개가 모여서 하나의 서비스를 제공하기도 합니다. 이렇게 컨테이너가 많아지게 되면, 관리하기가 힘들게 됩니다. 

 

또한, 이러한 컨테이너들을 일일이 docker run과 같은 명령어로 띄워서 하나의 서비스를 완성한다는 것은 상당히 번거로운 일이기도 하죠..

그래서 docker compose의 개념이 나왔습니다. Docker compose는 여러 개의 도커 컨테이너를 한번에 관리함으로써, 하나의 서비스에 여러개의 컨테이너를 관리하는 부분이 조금은 줄게 되었습니다.

 


4. 마무리

도커 : 가상머신으로 띄울 서버를 경량화하여 띄울 수 있게 만들어준 도구

도커 컴포즈 : 많은 컨테이너를 한번에 관리하게 해주는 도구

 

 

 

딥한 부분까지 들어가진 않았지만, 도커는 공부할 수록 신기하고 생각보다 더 유용한 기능을 제공하는 것 같습니다. 다음에는 이러한 도커 이미지를 직접 만들고, 배포하는 과정을 작성해보겠습니다. 감사합니다.