DevOps

도커 (docker) 란? + 쿠버네티스 (Kubernetes)

린예라 2024. 4. 24. 20:17

도커란 무엇일까?

도커는 여러 프로그램이 설치 될 수 있는 하나의 그릇(컨테이너)를 만들고 관리하는 역할을 해주는 녀석이다.

 

좀 어려운 말로하면 컨테이너 기반 가상화 플랫폼으로, 소프트웨어를 컨테이너로 패키징하여 실행 할 수 있게 하는 기술 혹은 플랫폼이다.

 

예를 들어보자, 내가 사용하던 컴퓨터가 고장이 나서 버리고 새로운 컴퓨터를 샀다. 이 때 컴퓨터를 새로 사서 너무 좋겠지만 기존에 내가 사용하던 각종 프로그램들을 설치하느라 정신이 없을거다.

갖가지 윈도우 설정 부터 시작해서, 크롬이나 내가 하던 게임도 다시 깔아야하고, 볼려고 다운받았던 영화도 다시 다운받아야 하고~ .....

 

이것은 비단 컴퓨터를 새로 샀을 때만 일어나는 일이 아니다.

 

내가 어떤 프로그램을 개발했는데, 이 프로그램은 다른 프로그램(.netFramework, Visual c++ 런타임) 같은 프로그램이 필요하다.

 

그럼 다른 사용자가 내가 개발한 프로그램을 받아서 실행 하려면 이런 프로그램을 따로 설치를 해줘야 하는거다.

 

이 때 도커를 사용해서 이런 프로그램 실행환경에 필요한 소프트웨어나 설정들을 하나로 묶어서 그릇(컨테이너)에 하나로 묶어서 이것을 통째로 배포하면, 매번 새로 설정을 하거나 필요한 프로그램을 깔거나 하는 수고를 덜어준다.

 

도커는 이런 컨테이너를 만들고 관리를 한다는 것이다.

 

도커의 컨테이너는 이런점을 이용하여 하나의 컴퓨터에 여러개의 서버를 운용할 수 있다.

예를 들면 컨테이너는 넓은 공간에 각각의 개인별 방을 만들어주는 칸막이와 같은 역할도 할 수 있는 것이다.

 

이와 비슷한 예로, 하나의 컴퓨터에 vm이라는 가상머신기능을 이용하여 여러개의 운영체제를 사용하며 여러개의 서버를 운영할 수 있다.

 

다만 도커는 이처럼 여러개의 운영체제를 사용하는 것은 아니고, 기존 컴퓨터의 운영체제에 종속된다.

대신 vm(가상머신)보다 더 가볍고 빠르다.

 

그리고 이런 컨테이너를 여러개를 사용한다고 하면, 이걸 일일히 관리하기 매우 수고스러울 것이다.

이런 여러개의 컨테이너들을 자동으로 조율하고 관리해 준다고 해서 오케스트레이션(여러 악기를 조율하는 오케스트라의 지휘자 같이) 툴 이라고 하고 이런 오케스트레이션 툴 중에 하나가 바로 쿠버네티스(Kubernetes) 라고 하는 녀석이다.

그림으로만 봐도 VM이 도커에 비해 무거워 보인다. 대신 VM은 여러 운영체제(Guest OS쪽)를 사용 할 수 있다.