Docker는 2013년에 dotCloud의 Solomon Hykes와 그의 팀에 의해 2013년 Pycon에서 (The future of Linux Containers) 처음 데모 되었다.

출시 전 오클랜드 항구에 들어오는 모든 컨테이너 선박을 볼 수 있었고,

“한 서버에서 다른 서버로 앱을 옮기는 것보다 지구 반대편에서 자동차를 배송하는 것이 더 쉽다.”는 사실이 해결해야할 문제처럼 보였다고 한다.

이 당시에는 클라우드 환경에서 애플리케이션을 배포하는 것이 어려운 문제가 있었다.

커져가는 클라우드 환경에서 서버가 10대라면 문제가 되지 않지만, 수천 대 이상의 서버를 관리하는 것은 매우 어려웠다.

기존 가상화 기술을 사용하면 리소스가 많이 소모되고 대규모 관리도 어려웠기 때문이다.

dotCloud 팀은 가상화 자체가 문제가 아니라 가상화 사용 방식이 문제라는 것을 인식했다.

전체 운영 체제를 가상화하는 대신 애플리케이션 해당 종속성만 가상화하는 것이 더 효율적이라는 것을 깨달았다.

이를 통해 Docker의 핵심인 컨테이너 개념을 개발하게 되었다.

팀이 처음 구현한 Docker는 컨테이너를 보다 쉽고 사용자 친화적으로 관리할 수 있는 방법을 제공하기 위해 LXC와 같은 기존 Linux 컨테이너 기술을 기반으로 구축되었다.

그렇다면, Docker는 컨테이너를 활용하여 기존 가상화 방식과는 어떤 점이 다르고 어떤 이점이 있는지 알아보자.

컨테이너(container)란 무엇이며 기존 가상화와 컨테이너 기반의 가상화의 차이점?