Docker - 도커와 기존의 가상화 기술(VM) 차이.
도커 컨테이너 와 VM의 차이를 확인 해보자.
먼저, 공통점은 도커 컨테이너와 가상 머신은 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치한다.
차이점
- 격리된 환경을 얼마나 격리를 시키는지의 차이
- 도커 컨테이너는 하이퍼바이저와 게스트 OS가 필요하지 않으므로 더 가볍다.
- 컨테이너는 호스트 OS위에 어플리케이션의 실행 패키지인 이미지를 배포하기만 하면 되는데
VM은 VM을 띄우고 자원을 할당하고 게스트 OS를 부팅하여 어플리케이션을 실행
도커 컨테이너
- 애플리케이션은 컨테이너가 제공하는 격리 기능 내부에 샌드박스가 있지만, 여전히 같은 호스트의 다른 컨테이너와 동일한 커널을 공유한다.
- 컨테이너 내부에서 실행되는 프로세스는 호스트 시스템에서 볼 수 있다.
- 컨테이너에 OS를 내장할 필요가 없어 매우 가볍다.
가상머신(VM)
- VM 내부에서 실행되는 모든 것은 호스트 운영 체제 또는 하이퍼바이저와 독립되어 있다.
- VM은 각각의 환경을 주어야하고 환경에 맞게 커널을 부팅한다.
- OS 까지 가상화하여야해서 느리다.
어떻게 해서 도커 컨테이너를 격리 시키는가?
- 리눅스에서 쓰이는 Cgroup과 네임스페이스를 사용한다.
- 컨테이너와 호스트에서 실행되는 다른 프로세스 사이에 벽을 만드는 리눅스 커널 기능
C Greup - CPU, 메모리 등 프로세스 그룹의 시스템 리소스 사용량을 관리 -> 사용량이 많을 경우 제한 기능
네임스페이스 - 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술