백엔드든지 프론트엔드든지 어플리케이션에서 요구되는 것들을 컨테이너에 담아서 독립적으로 구성해놓음
Hypervisor 기능을 활성화시켜서 사용해야함 -> 리눅스 커널의 기능을 사용하기 위해
따라서 Docker는 윈도우나 MacOS 말고 라이센스 비용이 들지 않는 Linux 위에 설치해서 사용함
하는 일은 같지만 생긴 구조(모양)이 다르다~
그냥 운영하느냐? 컨테이너에 넣어서 운영하느냐!
DockerFile을 통해 빌드해서 운영하게됨
<예시 DockerFile 로직>
1. 필요한 환경을 먼저 세팅
2. 만들어놓은 어플리케이션을 저장
3. application을 실행
ex) 컨테이너가 8080포트를 열고 client connection을 처리하고 200 code를 리턴하게 됨
개발자가 만든 그대로 어디서든 돌아가게!
확장/축소가 쉽고 MSA, DevOps에 적합하다!
우리가 평소에 개발했던 개발 환경을 다른 곳에서 받아서 운영할 때 개발 환경을 세팅을 하게 할 필요가 없다! -> 컨테이너 기반 어플리케이션이기 때문에
ex) 서버 하나를 만들었는데 scale out 해야한다 근데 os를 똑같이 하나 더 만들어서 운영한다?(인스턴스를 하나 더 판다?) 이건 너무 비효율적이고 cost가 많이 나갈거같음... 근데 컨테이너 기반으로 운영을 한다? 그럼 도커 어플리케이션만 하나 더 운영하면 매우 편리하고 OS를 하나 더 운영할 필요가 없음!!!