Docker :
어플리케이션을 패키징 할수 있는 툴
컨테이너라 불리는 소프트웨어 유닛안에 어플리케이션과 그에 필요한 시스템 툴, 환경설정 모든 dependencies 를 하나로 묶어서 다른 서버 다른 pc 그 어떤곳에도 쉽게 배포하고 안정적으로 구동할수 있게 도와주는 툴 이다.
✏️ Dependency ( 의존성 ): 서비스의 기술 스택이 업그레이드 되거나 확장으로 인해 아키텍쳐 구조를 바꿀 상황은 항상 온다. 무엇인가 바뀔때마다 각각의 기술스택의 라이브러리 호환성과 의존성 문제를 체크해주어야 하는데 도커는 각 기술스택들을 분리된 컨테이너에 고립시키고 얽혀있는 호환성과 의존성 문제를 분리 시켜준다.
🔸 node.js 의 경우 우리의 소스파일만 서버에 배포하는것으로는 어플리케이션을 구동하는데 문제가 있을수 있다. 이런 외부 라이브러리를 사용하면 여러 dependencies 와 환경 설정, 환경 변수 등 모든것들을 설정해줘야 하는데, 모든것을 설치,설정하는것은 번거롭고 오류도 많이 생길수 있음.
docker 컨테이너를 사용하면 런타임 환경에 필요한 모든것들을 어떤 pc에서도 언제든지 사용할수 있다.
컨테이너만들기
1. Docker File 만들기 - 컨테이너를 어떻게 만들어야하는 설명서같은 것
2. Image 만들기 - 어플리케이션을 실행하는데 필요한 모든 세팅들이 포함되어 있는것 (변경 불가함)
3. Container - image(class)를 이용해서 어플리케이션 구동하게 함