배경
향수 추천 서비스를 사용하다가 부트캠프에서 제공하는 EC2서버가 만료됐고 도메인을 유지하고 싶어서 서버 이전 작업을 했다. 기존 서버에 설치했던 파일의 버전을 일일이 찾아서 설치하고 이후 세팅을 메모해놓은 뒤 하나하나 설치하는 게 여간 불편한 게 아니었다. 그래서 아래와 같이 여러 이슈들이 발생했다.
https://tte-yeong.tistory.com/127
기존 서버에 설치한 정보를 그대로 다른 곳에 간단하게 옮길 방법은 없을까? 라는 고민을 했고 위 문제를 해결하는 방법으로 도커를 선택했다.
도커란 무엇인가
도커는 컨테이너 기반 가상화 도구이다.
가상화란
하나의 서버 자원을 나눠서 성능을 분산 시키고 분산된 서버는 각기 다른 서비스를 할 수 있다.
컨테이너란
가상화가 매번 OS를 새로 만들기에 무겁다. 컨테이너는 OS가 아니라 프로세스 단위로 격리 환경을 만든다. 따라서 이미지 파일에는 라이브러리 및 실행파일만 존재해서 가상화보다 가볍고 빠르다.
흔히 가상화하면 떠오르는 서비스들이 여럿 있는데 이들과 도커의 차이점은 아래 사진과 같다.
위 그림을 보면 왼쪽의 경우 가상머신마다 OS를 설치한다. 반면에 오른쪽은 컨테이너 기반으로 작동해서 운영체제를 설치하지 않는다.
정리하자면 가상화는 실행파일 + 라이브러리 + OS이고 컨테이너는 실행파일 + 라이브러리다. 당연히 가상화보다 빠르고 가볍기 때문에 컨테이너 엔진을 많이 사용하며 대표적인 컨테이너 엔진이 도커다.
구동 순서
컨테이너 만들기 → 배포 → 구동
컨테이너 제작 순서
도커파일 생성 > 이미지 다운 > 컨테이너 구동
도커 파일
컨테이너를 구동하기 위한 레시피다. 필요한 파일, 라이브러리, 환경변수, 구동 스크립트 등을 포함
이미지
애플리케이션을 실행하기 위한 코드, 런타임 환경, 시스템 툴 등을 포함한 것
컨테이너
개별로 고립된 환경에서 이미지를 수행한다.
초기에 내가 목적으로 한 서버에 설치된 파일을 그대로 다른 서버에 옮기는 작업을 도커로 할 수 있다.
해당 서버에 사용하는 도커 파일 스크립트만 가지고 있으면 언제든 다른 서버에서 해당 서버와 동일한 환경으로 서버를 구동할 수 있다.
하지만 매번 도커 파일을 docker run으로 실행하기란 여간 불편한 게 아니다.
이를 통합해서 사용하게 하는 것이 도커컴포즈다.
도커컴포즈
매번 도커 컨테이너를 run명령어로 실행하는 건 불편하다. 이것을 한 번에 통합해서 실행하는 것이 Docker Compose이다.
Docker Compose는 Docker 엔진밖에 위치해서 따로 설치를 해줘야 한다.
도커 컴포즈를 설치한 뒤 yml에 스크립트 파일을 작성하고 실행하면 여러 컨테이너들이 한 번에 실행된다.
도입 후기
확장성 있는 서버 아키텍처를 설계하기 위해서 도커는 필수적이다. 가장 만족스러운 것은 도커에 그치지 않고 도커 컴포즈까지 사용해본 것이다. 또한 한 번 도커 파일로 배포를 했다면 다음 프로젝트 때 해당 파일의 스크립트만 가지고 있으면 큰 어려움 없이 배포가 진행된다는 점에서 매우 만족스럽다.
도커를 처음 사용해서 배포할 때는 긴 시간이 걸렸는데 한번 하고 나니 다음 배포는 하루도 안 걸려서 완료됐다.
다만 도커 파일이나 도커컴포즈의 위치는 주의해서 넣자.
참조
https://www.youtube.com/watch?v=IiNI6XAYtrs
https://www.youtube.com/watch?v=Ps8HDIAyPD0&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf
'IT > 웹개발' 카테고리의 다른 글
CI CD with 젠킨스 (0) | 2022.10.30 |
---|---|
JWT 토큰 (0) | 2022.10.29 |