이번주는 Docker에 대해서 수업을 진행했고, 그걸 바탕으로 Docker를 가볍게 배워보고자 책을 한 권 샀다.
굉장히 귀여운 고래가 반겨주는 책이다. 이 책과 수업자료를 사용해서 Docker의 개념부터 정리하고 실습도 진행해보려 한다. 가상화의 역사부터 컨테이너란 무엇이고, 도커는 어떤 것인지 차근차근 알아가보자.
가상화(Virtualization)이란 말에서 알 수 있듯이 실제 물리적인 하드웨어가 아닌 가상의 추상화 계층을 생성하여 단일 시스템의 구성 요소를 여러 가상 머신(VM)으로 나누는 기술이다. 쉽게 말하면 물리적 컴퓨터 1대로 컴퓨터가 3대 있는 것처럼 만드는 것이다. 1대의 컴퓨터 위에 만들어진 가상의 컴퓨터 3대는 실제로는 물리적 컴퓨터 1대의 자원을 공유하지만, 서로 영향을 주지 않으며 별도의 컴퓨터처럼 동작한다.
가상화를 그렇다면 왜?하는지 나에겐 의문이었다. 하나의 컴퓨터를 굳이 왜 쪼개서? 그 안에 OS를 또 깔고 또?라는 의문을 가졌다. 그런데 기본적으로 사람마다 컴퓨터의 환경이 다르니 아예 가상화로 동일한 로직을 가질 수도 있고, 하나의 물리적 컴퓨터를 여러 대처럼 사용한다는 것에도 이점이 있다고 하니 알아보자.
가상화가 없다고 가정해보자. 그러면 각각의 어플리케이션마다 1개의 서버가 필요하다. 즉, 1개의 어플리케이션에 1대의 PC가 필요하다는 것이다. 1개의 어플리케이션, 1개의 PC, 1개의 OS 얼마나 안정적인가!? 그런데 우리는 현실을 살아가고 모든 것에는 돈이 든다는 사실을 안다. 모든 서버가 100%로 가동되면 돈이 안아까울테지만 어떤건 20%만 돌아가고 어떤건 5%만 돌아간다고 하면 엄청난 자원의 낭비일 것이다.
이때 가상화를 통해서 1대의 PC에 가상환경을 만들고 각각의 어플리케이션을 위한 서버를 올린다고 생각해보자. 10%, 20%, 30% 정도의 활용도를 가진 서버를 1개의 물리적 PC로 구축할 수 있는 것이다.

가상화를 쓰면 관리도 용이하다. 필요하면 싹 다 밀어버리거나, 템플릿으로 저장해두면 언제든 필요할때마다 물리적 컴퓨터의 리소스가 허용하는 한에서 몇 대든 찍어낼 수 있다. 컴퓨터가 소프트웨어로 되어 있어서 머신의 정책을 VM소프트웨어에서만 바꾸면 적용이 된다. 8GB메모리의 서버를 16GB로 만들기 위해 본체를 열고 메모리를 또 꽂을 필요가 없다는 것이다.

설정 하나만 잘해두면 하드웨어적인 사양부터 역할 별 보안 설정과 같은 소프트웨어적인 설정까지 알아서 촥!하고 달라 붙는다. 다 쓴 VM은 그냥 삭제시켜버리면 쓰던 자원이 바로 반납되어 다른 VM이 가져다 쓴다.
즉, VM은 컴퓨터 생성부터 폐기까지 전부 자동화가 가능하며, 템플릿을 통해 언제든지 동일 사양의 환경을 그대로 찍어낼 수 있어 관리가 용이하다.
사실 다른 것도 엄청 나왔는데 그건 내가 이해 못하겠다. 시원하게 Pass. 궁금하신 분들이 있다면 IBM공식 사이트를 참고하자
Docker란 무엇인가...
