Docker Compose 란?

2023. 12. 14. 09:59도커

docker-compose는 docker를 설치하면 같이 기본으로 딸려오는 기능이다.

조금은 다른점이 있는데 예를 들어서 컨테이너로 nestjs 프로그램을 랩핑하면 이 하나의 컨테이너를 도커에다 실행했을때 nestjs 프로그램을 설계한 대로 실행되도록 할 수 있다. 

그런데 컨테이너를 엄청 많이 만들기 시작한다면? nestjs 만들고, postgreSQL도 만들고, MongoDB도 만들고 Nginx 도 만들고 Redis 도 만들고 계속 만든다면?

 

1개나 2개일때는 도커로 쓸만했는데 컨테이너 개수가 많아지니까 관리하기가 너무 어려워진다.

이 컨테이너들을 관리하기 위해서 나온게 kubernetes, Docker compose, Docker swarm 같은 기술이다.

이중에서 현대의 가장 중요한 기술 중 하나는 kubernetes 이고 전세계 클라우드의 70~80%가 돌어간다고 한다.

 

docker swarm 은 kubernetes 와 비슷한 역할을 하려고 만들어졌는데 지금은 kubernetes한테 조금 많이 밀렸다.

그런데 docker-compose는 용도가 약간 다르다.

 

kubernetes는 여러 기기에서 여러 컨테이너를 자유롭게 활용하는세부화된 기술이다.

docker-compose 는 여러개의 기기 여러 개의 하드웨어에서 작동을 시킨다는 가정을 하고서 만들어지진 않은 기술이다.

docker-compose는 하나의 기기에서 우리가 여러개 컨테이너를 돌리는게 최적화 되어 있기 때문에 프로덕션 환경에선 보통 kubernetes 를 사용하고 로컬 환경에서 개발할때는 docker-compose를 활용한다.

 

docker-compose는 5개든 50개 컨테이너가 되었든 이 여러개의 컨테이너를 한번에 묶어서 관리할 수 있게 해주는게 docker-compose 이다.

 

그런데 단점이 있다. docker-compose는 docker-compose만의 문법이 따로 존재한다. (yml)

 

종합적으로 도커를 조금 더 효율적으로 컨테이너를 관리할 수 있게 해주는게 docker-compose 이다.