주희아빠의 헝그리 라이딩

Docker vs VM 개념 새롭게 정리해 드립니다. 본문

나름 IT 이야기

Docker vs VM 개념 새롭게 정리해 드립니다.

도림천 버섯돌이 2024. 1. 19. 17:46

2024.1.19

docker 를 아시는 분들은 이 이미지가 익숙하시지요.

네모 반듯한 컨테이너가 차곡차곡 쌓여 있습니다. 그래서 보통은 docker 를 이용해 패키징하면 컨테이너처럼 네모 반듯한 모양으로 구성될 거라는 생각이 들게됩니다.

하지만 사실 docker 의 개념은 고래위에 쌓인 컨테이너가 아닙니다. 그 컨테이너 안이 어떻게 생겼냐가 뽀인트입니다.

실제로 보면 docker 의 개념은 다음이 더 정확하지 않나 싶습니다.

방은 하나 뿐인데 그 방에 철망이나 천조각을 막아서 칸을 잘게 나눈 것이지요.

그래서 화장실이나 부엌은 하나 뿐인데 나눠써야 하고 그나마 잠자리만 겨우 독립을 시켜 놓은 모습이라고 생각합니다. 

저 작은 칸 중 하나에 apache 가 돌고 있는 프로세스가 자리잡고 또 다른 한 곳에는 tomcat 이 도는 프로세스가 자리 잡습니다. 하지만 서로의 존재를 모르고 열심히 일하고 있습니다.

화장실과 부엌은 네트웍이나 IO 와 연결되는 커널 영역이라고 비유할 수 있습니다.

 

사실 리눅스에서 컨테이너라고 불리우는 docker 가 등장하기 한참 전인 2010년 정도에 Yahoo 에서 사용하는 FreeBSD 에는 Jail 이라는 환경 격리툴이 있었습니다.

chroot 로 프로세스를 격리시켜서 마치 혼자만 실행되고 있는 것처럼 구성이 가능했습니다. 사실 이때도 사용하면서 이건 vm 의 일종인가 하고 헛갈려 했습니다.

그러다 몇년뒤 리눅스 진영에서 컨테이너라는 이름과 함께 docker 가 등장을 하였는데 이때는 웬지 환경 격리의 의미보다는 배포툴의 한 형태로 소개가 되고 있었습니다. 

아무래도 CI/ CD 가 유행하며 docker 를 사용하면 깔끔하게 패키징과 배포, 운영이 가능하다는 점이 어필을 한 모양입니다.

어쨌든 vm 같은 가상화가 아니라 리눅스 기본 커널을 같이 사용하기 때문에 제한적인 리눅스 계열에서만 동작을 합니다.

 

그에 비해 vm 은 별도의 살림방을 만들어 놓은 것입니다. 작긴하지만 별도의 독립된 화장실과 부엌을 가지고 있습니다.

이런 개념으로 보면 vm 은 화장실 딸린 고시원 정도라고 비교할 수 있겠군요. 부엌대신 작은 부르스타로 대체.

위에 있는 쪽방에 비교하면 훨씬 더 독립된 집다운 면모를 갖추고 있지만 사실은 이것도 일종의 방 쪼개기입니다. 원래는 좀 더 넓었던 공간을 벽으로 구분한 것입니다.

하지만 완전히 독립된 또 하나의 컴퓨터 환경이기 때문에 리눅스 호스트에 Windows 나 MacOS 를 설치할 수도 있고 그 반대도 가능합니다.

 

다음은 VM 을 많이 만들어 놓은 모습니다. 저희 동네가 신림동이라 근처에서 많이 볼 수 있습니다.

 

그렇다면 이건 데이터 센터일 수 있겠군요. 저 안에 수 많은 vm 이나 docker 컨테이너가 구성되어 있을 수 있습니다.

 

자 이제 다들 Docker vs VM 설명하실 땐 쪽방과 고시원을 생각하시면 됩니다.

반응형