https://www.youtube.com/watch?v=hWPv9LMlme8
이거 따로 문서 만들어서 정리
가상화기술 - VM vs. Docker
- 먼저 가상화 기술의 필요와 등장 배경에 대해 알아보자.
- 건물주의 비유를 들면 적절하다.
- 만약 넓은 공간을 한명의 입주자가 혼자서 사용하게 된다면, 건물주 입장에서는 공간의 낭비가 될 것이다. 서버 공간도 이와 같다.
- 예를 들어 64gb의 메모리 사양을 가진 서버 컴퓨터에서 4gb 정도를 요구하는 소프트웨어 하나만 구동한다면 이는 서버 자원의 낭비가 되는 것이다. 예를들어 서버 컴퓨터를 보유한 회사에서 해당 컴퓨터를 알차게 다 뽑아먹지 못하고 낭비가 발생할 수 있다는 것이다.
- 이를 해결하기 위해 등장한 것이 가상화 기술이다. 1)Virtual Machine과 2)Docker라는 두가지 가상화 기술에 대해 알아보자.
Virtual Machine 과 Docker Container의 차이점
- 먼저 VM은 마치 건물에 가벽을 설치하여 여러 입주자를 추가로 들이는 것과 비슷하다.
- VM은 한 컴퓨터 안에서 각각 OS를 가동하는 가상 컴퓨터들이 실제 물리적 자원을 분할하여 사용하기 때문에, 성능상 단점이 있다.
- 실제로 물리적 자원을 나누어서 사용하는 부분이 가벽을 설치하는 것과 유사한 것이다.
- 반면 도커 컨테이너는 말 그대로 내부에 필요한 물품이나 장비 설치가 완료된 컨테이너를 건물 안에 들이는 것과 비슷하다. 건축에서 컨테이너 하우스, 모듈러 주택, 이동식 주택 느낌. 마치 건대 커먼그라운드 같은 느낌인 것이다.
- OS단까지 내려가지 않고, 실행 환경만 독립적으로 작동시키기 때문에 실제로 컴퓨터에 직접 설치해서 사용하는 것과 큰 차이 없이 사용할 수 있다고 한다.
- 질문: 근데 예를 들어서 우분투 같은 OS 이미지를 다운받아서 컨테이너 생성하면 컨테이너 안에 결국 가상 OS가 있게 되는거 아닌가??
- 건물 자체에는 영향을 주지 않으면서(가벽 설치 x), 컨테이너를 이동시켜 다른 건물에 가져가면 그대로 사용할 수 있다는 점(다른 환경에서도 동일한 도커 이미지를 통해 똑같은 컨테이너를 생성할 수 있다)이 환경에 구애받지 않는 도커 컨테이너와 유사하다고 볼 수 있다.
- 실제 예를 들면 파이썬 서버, 자바 서버, DB 서버를 물리적으로 따로따로 두는 것이 아니라 한 서버 컴퓨터에서 도커를 통해 모두 관리할 수 있다는 것이다.


https://www.youtube.com/watch?v=tPjpcsgxgWc
도커의 장점
- 위와 같은 기술적 배경이 있기 때문에 도커를 사용하면 가상 실행환경을 설치/실행/종료/연동 하는 작업을 기존 VM에 비해 상대적으로 가볍고 빠르게 진행할 수 있다는 장점이 있다.
- 즉, 개발자로 하여금 최대한 테스트 및 배포 환경에 구애받지 않고 앱 자체를 개발/디버깅 데 집중할 수 있도록 도와주기 때문에 매우 유용한 것이고, 이런 이점 덕분에 도커가 기존의 VM을 대체해 나가고 있는 것이다.
Container, Docker, Kubernetes
Container
- 컨테이너를 사용하면 한 대의 서버에서 여러 개의 소프트웨어를 안전하고 효율적으로 운영할 수 있다.
- = 한 건물에 여러 입주자를 효율적으로 들일 수 있다.
Docker
- 도커는 컨테이너를 관리하기 위한 도구로 일종의 프로그램이다.
- = 컨테이너 입주자를 관리하는 매니저라고 볼 수 있다.