본문 바로가기

DevOps/쿠버네티스(Kubernetes)

[쿠버네티스 #5] Docker compose와 kubernetes의 차이

728x90

이번 포스팅에서는 Docker Compose에 대해 얘기해보려한다.

 

일단 나는 반년 전 무작정 쿠버네티스에 대해 공부할 때 도커 컴포즈는 물론이며 도커에 대한 기본 상식도 없었다.

 

그 때 당시에 도커 컴포즈와 쿠버네티스 둘다 컨테이너를 쉽게 만들어주는 거 아닌가? 라고 생각했고 쿠버네티스만 사용하였으며 도커 컴포즈를 사용하지 않았기에 별로 신경않았다.

 

하지만 최근에 도커 컴포즈를 사용할 일이 있었고 이에 대해 다시 찾아보게되었다.

 

우선 쿠버네티스의 등장배경부터 알아보면

 

MSA가 유행하게되었고 그에 따라 도커와 컨테이너에 대한 기술이 주목받게되었다. 그러다 다수의 컨테이너를 관리할 필요가 생겼고 다수의 컨테이너를 관리할 수 있는 도구인 컨테이너 오케스트레이션 이 등장하게되었다. 

 

컨테이너 오케스트레이션은 여러 종류가 있지만 그 중 사실상 표준이 된 것이 구글의 쿠버네티스(kubernetes) 이다.

 

그럼 도커 컴포즈는 무엇인가? 도커 컴포즈는 여러개의 컨테이너를 쉽게 실행할 수 있는 도구이다.

 

기존의 컨테이너는 이미지를 실행시켜 컨테이너를 만들고 추가적인 명령어로 컨테이너에 대한 조건을 설정해놔야한다. 컨테이너 하나하나를 일일이 모두 실행하고 설정하려면 굉장한 노가다일 수 밖에 없다.

 

컨테이너 생성과정

 

 

하지만 도커 컴포즈는 도커컴포즈파일에 미리 여러 컨테이너를 정의해두고 컨테이너들의 실행 순서 DB연결 등을 정할 수 있다. 

 

간단하게 말해서 도커 컴포즈란 도구는 이러한 노가다 과정을 줄여주는 것이다. 

 

도커 컴포즈를 사용한 컨테이너 생성

 

 

여러개의 컨테이너를 만들어야 한다면 도커 컴포즈가 너무 편할 수 밖에 없다. (그냥 내용을 yaml파일 하나에 정의해두면 알아서 만들어주니까..)

 

 

그럼 이제 대략적인 두 개의 설명을 끝냈다. 간단하게 정리하자면

 

1. 쿠버네티스는 쿠버네티스 클러스터 내에서 컨테이너를 생성하고 관리하는 컨테이너 관리 도구이다. 쿠버네티스는 yaml파일에 정의된 내용을 바탕으로 쿠버네티스 클러스터 내에서 쿠버네티스 오브젝트를 만들고 컨트롤러를 만든다. 

 

2. 도커 컴포즈도 마찬가지로 yaml파일에 정의된 내용을 바탕으로 Host컴퓨터 내에 컨테이너를 만든다.

 

아마 기능적으로 yaml파일에 정의된 내용으로 컨테이너를 만든다(쿠버네티스는 정확히 쿠버네티스 오브젝트를 만드는 거지만)라는 공통점 때문에 처음 공부하는 사람은 헷갈리는 거 같다. 

 

 

 

----  추가 작성 ---- 

Docker-compose 설치 방법에 대해 적어봅니다.

 

sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

위에서 1.25.4 는 도커 컴포즈의 버전입니다.

 

https://github.com/docker/compose/releases

요 링크에서 최신버전을 확인할 수 있습니다.

 

 

sudo chmod +x /usr/local/bin/docker-compose

도커 컴포즈 경로에 실행권한을 추가하고

 

docker-compose --version

마지막으로 제대로 설치되었는지 확인해 볼 수 있습니다.

반응형