왜 도커(docker)를 사용할까?

Why use a docker?

요즘 프로젝트들을 보면 그냥 배포하는 것이 아닌 아래처럼 도커를 통해 배포하는 것을 많이 볼 수 있다. 우리 프로젝트도 도커를 이용해 배포를 하려고 하는데 도커가 뭔지, 왜 사용하는지 알아보자

도커(Docker)란?

컨테이너를 사용하여 응용프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이다. 아래 그림처럼 다양한 프로그램, 실행환경을 컨테이너로 추상하고 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.

도커를 왜 사용할까?

어떠한 프로그램을 설치하는 과정에는 갖고 있는 서버, 패키지 버전, 운영체제에 따라 많은 에러들이 발생할 뿐 아니라 설치 과정 또한 복잡하다. 도커는 어떠한 프로그램을 다운 받는 과정을 굉장히 간단하게 만들어준다.

도커없이 일반적으로 Redis를 설치하는 경우

Redis 홈페이지에 접속한 후 설치방법에 따라 명령어를 입력하게 되는데 정상적으로 한 번에 되면 정말 다행이지만 항상 어느 곳에서 나 잘될 수 가 없다. 그 예로, 위에선 wget이 없다고 에러가 발생한 모습이다. 그래서 wget을 받은 후 다시 Redis를 받아야되는데 이런식으로 어떠한 특정 프로그램을 받을 때 부수적인 것(wget 같은)들도 받으면서 과정이 복잡해지고 에러도 많이 생기게 된다.

도커로 Redis를 받는 설치하는 경우

그냥 docker run -it redis라는 명령어 한 줄이면 끝난다. 이처럼 도커를 이용하여 프로그램을 설치하면 예상치 못한 에러도 덜 발생할 뿐 아니라 설치하는 과정도 훨씬 간단해진다.

도커 이미지

그래서 도커 컨테이너는 어떻게 생성 될까? 도커 이미지라는 것이 필요한데 도커 이미지는 프로그램을 실행하는데 필요한 설정이나 종속성을 갖고 있으며 도커 이미지를 통해 컨테이너를 생성하며 도커 컨테이너를 이용하여 프로그램을 실행한다.

즉, 이미지는 응용 프로그램을 실행하는데 필요한 모든 것을 포함하고 있다는 것인데 그 필요한 것이 뭘까?

  1. 컨테이너가 시작 될 때 필요한 명령어 ex) run kakaotalk
  2. 파일 스냅샷 ex)컨테이너에서 카카오톡을 실행하고 싶다면 카카오톡 파일(카카오톡 실행하는데 필요한 파일) 스냅샷

이미지가 컨테이너를 만드는 순서

  1. Docker run <이미지>

  2. 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 옮김

  3. 이미지에서 가지고 있는 명령어를 이용해서 카카오톡을 실행


그래서 우리 프로젝트에는 왜?

이렇게 도커가 뭔지, 왜 쓰는지에 대해 간단히 알아 봤는데 그래서 우리 프로젝트에서는 왜 쓰고 쓴다면 어떤게 좋을지 생각해봤다. 현재 우리 프로젝트는 소규모의 팀으로 당장 큰 여유가 없을 뿐더러 미리 미래를 위해 대규모의 환경을 구성할 필요도 없다.

그렇기 때문에 현재 배포는 최대한 간단한 구성을 할 필요가 있다고 판단했다. 하지만 나중에는 우리가 더 성장해 규모가 커져 구성을 어떻게 변경할지 알 수가 없기 때문에 나중에 확장성을 위해 도커를 도입하기로 결정했다.


참고: https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%8F%84%EC%BB%A4-ci

*틀린 부분이 있으면 언제든지 말씀해 주시면 공부해서 수정하겠습니다.


© 2022. All rights reserved.

Powered by 애송이