Docker?
도커는 컨테이너에 기반해 애플리케이션을 구축하는 소프트웨어 플랫폼이다.
도커를 바탕으로 개발자는 소프트웨어를 이미지로 패키징 해 '한번 구축하면 어디서나 실행할 수 있는(Build once and run Anywhere) 보장된 환경을 제공할 수 있다.
Container 와 VM(Virtual Machine)의 차이점
VM(virtual Machine)
- 하드웨어를 가상화 => 소프트웨어로 구현된 하드웨어
- OS위에 가상의 하드웨어(=컴퓨터)를 만들고 그 위에 OS를 설치하고 그 위에 프로세스를 만듬
Container
- OS에서 지원하는 기능을 사용 => 같은 커널을 사용하기 때문
- 격리된 환경에서 프로세스를 실행
- 도커 컨테이너는 OS와 통신하면서 같은 커널을 활용해 프로세스를 수행
- 즉 하드웨어의 가상화없이 격리된 환경에서 실행되는 프로세스라고 정의할 수 있음
- 컨테이너는 일반적으로 메가바이트 단위로 특정 작업(마이크로 서비스)을 수행하기 위해 필요한 환경만을 구축해 이미지로 패키징해 사용
컨테이너가 필요한 이유?
- 컴퓨터의 환경이 보편적이 않기 때문 => 상황에 따라 환경이 다름
따라서, 동작이 보장되어 배포된 이미지를 바탕으로 어느 환경에서나 사용가능
- 이미지로 만들어 공유되고 여기저기서 사용이 가능하기 때문에 재현성이 뛰어남