요즘 Docker라는 말을 심심치 않게 듣게 된다. 사실 어쩌다보니 Windows에서 개발을 하는 회사로 이직을 하게 되어 Linux쪽 소식을 애써 찾지 않으면 전혀 들리지 않는(아니 회사에서 관심이 없는) 상황이 되다 보니 최신 트렌드에 대해 상당히 늦게 접하는 것 같다.
Docker도 사실 듣기는 예전부터 들어왔고, 이미 상당히 많은 부분에서 사용하고 있다고 들었다.
가끔 그래서 Docker가 뭐지? 윈도우에서 빠른실행 처럼 뭔가 맘대로 자주 사용하는 어플리케이션을 올려놓고 사용하는 것인가? 싶다가도, 현재 회사에서 사용할 일이 없으니 딱히 관심을 가지지 않았던게 사실...
그래도 늘 그렇듯 열광하는 사람들이 있다는 것은 그 자체에 뭔가 매력적인 것이 있기 때문이기에 Docker가 무엇인지, 당장 사용할 작업은 없지만 그래도 그게 무엇인지 알아 두는 것이 좋다는 생각에 자료를 찾아 보았다.
역시 이미 많은 사람들이 많은 곳에서 많은 회사에서 사용하다보니 자료도 생각보다 많았다.
일단 가장 먼저 보게된 글은 다음 주소이다.
이 블로그 글만 읽어봐도 그게 무엇인지는 알게된다.
Docker를 가장 알기 쉽게 써놓은 부분은 다음과 같다.
기존의 가상화 방식은 주로 OS를 가상화하였습니다.
우리에게 익숙한 VMware나 VirtualBox같은 가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다. 이 방식은 여러가지 OS를 가상화(리눅스에서 윈도우를 돌린다던가) 할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용할 수 없었습니다.
이러한 상황을 개선하기 위해 CPU의 가상화 기술(HVM)을 이용한 KVMKernel-based Virtual Machine과 반가상화 Paravirtualization방식의 Xen이 등장합니다. 이러한 방식은 게스트 OS가 필요하긴 하지만 전체OS를 가상화하는 방식이 아니였기 때문에 호스트형 가상화 방식에 비해 성능이 향상되었습니다. 이러한 기술들은 OpenStack이나 AWS, Rackspace같은 클라우드 서비스에서 가상 컴퓨팅 기술의 기반이 되었습니다.
전가상화든 반가상화든 추가적인 OS를 설치하여 가상화하는 방법은 어쨋든 성능문제가 있었고 이를 개선하기 위해 프로세스를 격리 하는 방식이 등장합니다.
리눅스에서는 이 방식을 리눅스 컨테이너라고 하고 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작합니다. CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거어어어어의 손실이 없습니다.
즉, Docker는 가상화 기술의 현재 진행형이라고 할 수 있다.
나는 아직까지 개발 환경을 구축하기 위해 매번 VirtualBox로 가상 서버를 올리고, 거기에 필요한 환경을 구성하고, 내 로컬 PC에서 해당 서버에 접속하여 작업을 한다. 위에서 말하는 전 가상화 환경이다. 단점은.....너무 많다. 물론 과거 (VirtualBox, VMWare 같은 것이 없던 시절)에 비하면 이것은 엄청난 기술이다.
하지만, 이젠 전가상화를 뛰어 넘어 반가상화, 이제는 그렇것 구분없이 그냥 프로세스를 가상화해버리는 기술이 나온것이다...
위 링크된 블로그 3편을 모두 읽어보면, 아 나도 해보고싶다 해보고싶다 가 그냥 막 느껴질 것이다.
블로그들에 나와있는 수많은 예제들을 직접 진행해보고, 그 내용을 여기 블로그에 남길것이다.