기존에 개발환경을 셋팅하려면 운영체제부터 온갖 프로그램을 하나하나 깔아야 했다.
수많은 시행착오를 거쳐야 하는데 그 과정에서 온갖 에러에 시달리게 된다.
또한 이러한 프로그램들을 설치하고나면 어느 한 프로그램이 리소스를 많이 사용하여 시스템 전체에 과부하가 걸릴 수도 있다.
이를 해결하기 위한 방식중 하나가 vm이다.
vm은 물리서버위에 격리된 가상 서버를 두는것으로 이를 통해 위 문제를 해결할 수 있으나, 운영체제 전체를 깔아야 한다는 점 때문에 무겁다는 단점이 있다.
무거운 운영체제는 공유하고, 꼭 필요한 파일만 가지고 container 내에서 어플리케이션을 실행시킬 수는 없을까?
여기서 나온것이 바로 docker이다.
docker는 리눅스 기반 container runtime으로 vm보다 훨씬 가볍게 배포가 가능하다.