"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."

도커를 한번쯤은 공부해보고 싶었는데, 이번 기회로 도커의 기본서로 쓰일만한 <그림으로 배우는 도커> 책을 리뷰하게 되었다.
이 책은 7부로 구성되어 있다.
1부 - 가상화 및 도커에 대한 기초 지식
2부 - 도커 컨테이너 활용법
3부 - 도커 이미지 활용법
4부 - 도커 파일 활용법
5부 - 고급 도커 컨테이너 활용법
6부 - 웹 서비스 개발 환경 구축
7부 - 운영 시 주의할 점과 트러블 슈팅
2부부터 5부까지는 명령어와 도커파일을 위주로 설명하고, 장마다 문법을 그림과 함께 설명해놨다.
6부는 도커 명령어를 사용해서 실제 개발 환경을 구축하는 체험학습을 진행한다. 여러 컨테이너로 환경을 구축하고, 마지막에는 도커 컴포즈로 재구축하도록 진행한다.
7부는 운영 시 주의할 점과 디버깅 노하우를 위주로 설명하는데, 유료 플랜을 소개하고 한전하면서도 사용하기 쉬운 도커 컴포즈 환경 구축 방법을 소개한다. 여기서 도커 디버깅 관련 내용은 익숙해질 때까지 시행착오가 많이 발생하는 부분이니 꼭 활해보라고 저자가 강조하셨다.


이렇게 파란 배경 터미널과 노란 배경 터미널로 나눠져 있는데, 도커 컨테이너 외부와 내부가 확실하게 구분되어 보여줘서 시각적으로 이해하기 편하다.
이 책에서 주로 설명해줄 도커는 컨테이너형 가상화 소프트웨어 중 하나이다.
가상 머신은 하드웨어 일부를 소프트웨어로 구현해서 마치 물리적인 실체가 있는 컴퓨터처럼 보이는 것을 말하는데, 이 가상머신을 만들기 위해 물리 머신인 내 컴퓨터에 가상화 소프트웨어를 활용한다.
예시를 들자면, 하나의 서비스를 개발할때 누구는 윈도우 OS를 쓰고 누구는 맥 OS를 써도 가상화 소프트웨어를 통해 동일한 환경의 가상머신을 구축하면 물리머신의 차이점은 고려할 필요가 없어진다.

도커가 속한 컨테이너형 가상화 소프트웨어는 호스트 OS에 설치해서 컨테이너 단위로 애플리케이션을 관리한다.
컨테이너형 가상화 장점은 가상 머신에서 작동하는 OS인 게스트 OS를 가동하지 않아서 리소스 소비가 적은 점과 실행이 빠른 점이다. 물리머신에서 직접 작동하는 OS인 호스트 OS와 공존도 할 수 있다.
단점은 게스트 OS가 없으므로 리눅스 컨테이너를 가동하려면 호스트 머신에서 리눅스 커널을 빌려야 한다.
커널은 OS의 핵심이 되는 소프트웨어이다. 호스트머신이 리눅스가 아니라면 별도로 리눅스 커널을 준비하고 리눅스 가상 머신을 가동해야 한다.
위의 그림을 참고하면 좀 더 이해가 쉬울듯 하다.
도커의 기본 개념을 설명했으니 책 내부를 보면서 책을 조금 더 소개하자면,

위와 같은 직관적인 그림들로 이론을 설명해줘서 도커에 대해서 처음 배우는 나도 이해가 잘 되게끔 구성되어 있고, 생소하거나 어렵다고 느낄 수 있는 용어들을 바로바로 내용에서 설명해주면서 넘어간다.
저자가 도커의 기본서로 쓸 수 있도록 그림으로 배우는 도커라는 이름에 걸맞게 진짜 그림을 많이 넣어주신게 느껴진다.

코드는 위와 같은 느낌으로 설명하는데, 직관적인 표로 어떤 명령어나 함수들을 사용할지 미리 정리하고, 그 밑에는 위에 잠깐 이야기한 파란색 박스와 노란색 박스를 활용하여 직접 실습하며 따라올 수 있도록 구성해두었다.

중간중간에 이렇게 치트시트 같이 총정리 느낌으로 넣어주시는데, 이런 포인트가 이 책의 매력포인트 중 하나라고 느꼈다. 포스트잇 하나만 붙여놓고 나중에 기억이 가물가물 할 때 바로 보면 되는 이런 요약정리 느낌의 페이지가 너무 좋다고 느꼈다.
이 책은 어느정도 개발 지식이 있는 사람들을 위한 책이라고 생각한다. 가상화 서버를 만든다는 도커라는 개념 자체가 입문자들에겐 어렵게 느껴질 수 있다. 리눅스 커널을 베이스로 하기 때문에 이 책을 읽기 전에 우분투와 리눅스 관련 기초 책을 읽기를 권장한다. 이 책은 도커가 필요한 환경이 닥쳤을 때 직접 몸으로 부딪혀가며 익히기를 원하는 사람들에게 권장한다. 나도 도커를 처음 배우는 입장이라 아직 끝까지 다 읽지는 못했지만, 개발 지식이 얕은 나에게도 부담으로 느끼지 않고 조금씩 따라갈 수 있는 책이라 느껴져서 기본서로 좋아보이는 책이다.