Doker란?

image.png

도커의 원리

도커는 컨테이너 기반의 가상화 기술로, 각각의 애플리케이션이 독립된 환경에서 실행되도록 해준다. 컨테이너는 가상 머신과는 다르게 호스트 운영 체제의 커널을 공유하며, 가벼운 환경에서 격리된 프로세스들을 실행할 수 있다. 이로 인해 여러 개의 컨테이너가 하나의 운영 체제 위에서 실행되지만, 서로 독립적이고 안전하게 동작할 수 있다.

컨테이너는 하드웨어와 운영 체제를 가상화하는 대신, 운영 체제의 커널을 공유하고, 필요한 라이브러리나 의존성만 포함시켜, 가상 머신보다 훨씬 더 효율적이고 경량화된 환경을 제공한다. 이로 인해 빠른 시작 시간과 낮은 리소스 소모가 가능하다.

도커와 가상 머신의 차이점

도커와 가상 머신.png

<aside> 💡

도커는 자원을 효율적으로 관리할 수 있어, 많은 수의 컨테이너를 한 시스템에서 실행할 수 있으며, 각 컨테이너가 동일한 하드웨어 리소스를 공유하면서도 서로 독립적으로 실행된다. 반면, 가상 머신은 각각 별도의 운영 체제를 포함하고 있기 때문에, 동일한 하드웨어에서 가상 머신을 많이 실행하면 성능 저하가 발생할 수 있다.

운영 체제 커널 공유

컨테이너는 호스트 OS의 커널을 같이 쓰면서도, 프로세스(작업)를 완전히 분리해 격리된 상태로 실행한다. 그래서 여러 컨테이너가 동시에 실행되어도 서로 영향을 주지 않고 독립적으로 동작할 수 있다.

<aside> 💡

하이퍼바이저는 가상화 계층(Virtualization Layer)을 구현해주는 소프트웨어로, 하드웨어 위에서 가상 머신을 생성하고, 필요한 만큼 자원을 할당해주고, 가상 머신들의 요청을 처리해주는 등 가상화를 도와주는 역할을 한다.(물리 하드웨어와 가상 머신의 영역을 분리하고 자신이 그 사이에서 중간 관리자, 즉 인터페이스 역할을 한다.)

https://selog.tistory.com/entry/가상화-가상머신VM과-하이퍼바이저-쉽게-이해하기

커널은 항상 메모리에 상주하는 운영체제의 핵심이 되는 부분이다. 컴퓨터 자원을 관리하는 자원 관리자로서 대표적으로 다음 4가지 기능을 가지고 있다. 커널은 사용자가 물리적인 하드웨어에 접근하고 사용할 수 있도록 하기 위한 목적을 가지고 있고, 사용자가 쉘(Shell)을 통해 입력한 명령어를 해석하여 하드웨어에 전달해주는 역할을 한다.

  1. 메모리 관리
  2. 프로세스 관리 및 CPU 스케쥴링
  3. 디바이스 관리
  4. 시스템 콜 인터페이스 및 보안시스템 콜을 제공하여 응용 프로그램 - 프로세스의 서비스 요청을 수신한다.

https://velog.io/@geniee1220/OS-운영체제Operating-System와-커널Kernel

</aside>

도커의 주요 구성 요소