Docker 개요
비용 효율성, 컴퓨터 자원을 최대한 잘 쓰는게 핵심이다.
1. Traditional Deployment
어떤 Application이 있을 때, 한 app이 사용하는 특정 라이브버리는 한 version만을 사용하게 된다.
한 앱과 다른 앱이 같은 라이브러리를 사용하는떼 만약 version이 다르게 된다면, 충돌 문제가 발생하게 된다.
즉, 공유 자원으로 인해 충돌 문제이다.
이를 방지하기 위해 각각의 app을 격리해야 한다.
2. Vitualized Deployment
그래서 가상화를 하게 된다.
Hypervisor를 두고, 그 위에 각각의 VM을 둔다. 이를 Guest OS라고 부른다.
이 Guest OS에는 각각의 CPU, RAM, HDD가 존재한다.
이 HW 자원을 emulation 해야 하다 보니 성능의 효율성이 떨어지고, 자원의 Overhead가 발생한다.
도커란?
- 컨테이너형 가상화 기술 - 경량화
- 컨테이너: 호스트 OS상에 논리적인 구획을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것 - VM과 같다.
- 도커의 이미지 300MB vs centosminimal은 900MB => 훨씬 더 경량화 되어 있다. => 일반 VM보다 빠르다.
- 애플리케이션의 실행에 필요한 환경을 하나의 이미지로 모아 두고, 그 이미지를 사용하여 다양한 환경에서 애플리케이션 실행 환경을 구축 및 운용하기 위한 오픈소스 플랫폼
Docker
- 컨테이너형 가상화 기술
ex . 웹소스 개발자가 php, html, img를 통해 web을 만들었다.
- docker hub <- docker image를 업로드한다.
- docker image build # 도커 이미지를 만드는 기능 (빌드)
- docker iamge push/pull # 도커 이미지를 공유하는 기능 (ship)
- docker container run # 도커 컨테이너를 작동시키는 기능(배포)
Architecture of Docker
- Client, Docker_Host는 같은 서버에 위치하게 된다.