반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

하이퍼바이저와 컨테이너 본문

인프런, 유데미/개발자를 위한 쉬운 도커

하이퍼바이저와 컨테이너

5_hyun 2025. 5. 23. 00:05
반응형

가상화 기술이란?

IT에서는 실제로 존재하는 것을 물리적, 가상으로 존재하는 것을 논리적이라 함

 

-도커는 가상화 기술

  1. 도커를 사용하는 이유는 하나의 컴퓨터에서 그냥 프로그램 4개를 돌리다가 1개가 자원을 많이 쓰거나, 에러 발생 시 다른 프로그램에도 영향을 줌
  2. 결국 하나의 OS에서 여러 프로그램을 돌리는 건 매우 안 좋음
  3. 도커를 사용하면 프로그램들이 논리적으로 분리되어 있어서 안전함

하드웨어 여러 개를 사용하는 것보다. 좋은 컴퓨터 1대를 사용하는 것이 비용적으로 더 저렴함

가상화 기술의 종류

가상화 기술은 하이퍼바이저와 컨테이너 2가지가 있음

하이퍼바이저

  • 하이퍼바이저는 컴퓨터에 설치되는 프로그램(Host OS에서 설치 가능)
  • 하이퍼바이저는 가상 OS(게스트 OS)를 실행/종료 가능
  • 각 OS 마다 시스템 콜 표준이 다르다. 그렇기 때문에 게스트 OS를 호스트 OS와 다르게 적용 시키는 것은 어렵다. 
    • 따라서 하이퍼바이저가 커널로 가는 명령어를 통역해주는 역할을 한다.
  • 하이버바이저는 소프트웨어임(VM 머신, 버추얼 박스)
  • 커널이 독립적으로 존재

컨테이너

  • 하이퍼바이저 기술보다 더 선호되는 방식
  • 하이퍼바이저보다 가볍고 빠르다.
    • 모던 애플리케이션에서는 가볍고 빠르다는 것이 굉장히 중요하다.
  • 컨테이너는 리눅스 커널이 제공하는 LXC(LinuX Containers) 자체 격리 기술에서 출발, LXC는 커널의 자체 기능으로도 게스트 OS 격리가 가능
  • LXC 기술은 namespaceCGroups(control Groups)라는 기능 활용
    • namespace는 프로세스, 하드드라이브, 네트워크, 사용자, 호스트 네임처럼 리소스를 나누는 기준의 역할
    • CGroups는 프로세스가 사용하는 메모리와 CPU, 하드디스크, 네트워크 밴드위스처럼 리소스의 사용량을 배분하는 기술
    • 이렇게 LXC를 사용해서 만든 것을 컨테이너라고 부름
  • 모든 컨테이너는 호스트 OS의 커널을 공유해서 사용

정리

  • 하이퍼바이저는 거쳐가는 것이 많아서 오버헤드가 높음, 따라서 컨테이너가 리소스를 더 효율적으로 사용할 수 있음
  • 하지만 하이퍼바이저는 커널을 독립적으로 갖고 있기 때문에 보안적으로 더 뛰어나다고 할 수 있다. 
  • 그리고 컨테이너는 호스트 OS와 커널을 공유하기 때문에 호스트 OS와 다른 OS를 실행할 수 없다.
  • Docker Desktop의 경우
    • Windows나 macOS에서 Linux 컨테이너를 실행할 때는 내부적으로 경량 가상머신(Hyper-V, WSL2 등)을 사용해서 Linux 커널을 제공
    • Docker Desktop 자체가 하이퍼바이저 + 컨테이너의 하이브리드 구조
    • 호스트 OS와 다른 게스트 OS(Linux VM)를 하이퍼바이저가 생성하고, 그 VM 안의 Docker Engine이 컨테이너들을 관리하는 방식

Docker 아키텍처

docker 엔진: 사용자의 요청을 받아서 컨테이너를 관리해주는 역할

docekr 런타임: 직접 커널과 통신을 하면서 실제로 격리된 공간을 만드는 역할, runc라는 런타임 사용

  • 도커는 사용자의 명령을 전달해주는 클라이언트(CLI)와, 이를 실행하여 컨테이너를 관리하는 도커 데몬 서버(도커 D라고도 부름)가 있음
  • 보통 데몬이라는 이름이 붙은 소프트웨어는 서버에서 지속적으로 실행이 되는 소프트웨어를 의미
  • 따라서 도커 데몬은 호스트 OS에서 지속적으로 실행되면서 클라이언트 요청에 따라 컨테이너를 관리

API도 제공

https://docs.docker.com/reference/api/engine/

 

Docker Engine API

Learn how you can use Docker Engine API and SDKs in the language of your choice.

docs.docker.com

 

-명령어

  • Management Command는 대분류이고, Command는 소분류이다.
  • Management Command는 일반적으로 생략이 가능하다.
  • 따라서 docker container run => docker run으로 가능

-출처

https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%89%AC%EC%9A%B4-%EB%8F%84%EC%BB%A4/dashboard

 

개발자를 위한 쉬운 도커 강의 | 데브위키 - 인프런

데브위키 | , 개발자로 취업은 했는데 도커, 실무에서 어떻게 사용해야 하나요?😭 [사진]쿠버네티스를 학습하기 전 개발자가 필수로 알아야 하는 도커 쿠버네티스와 같은 컨테이너 오케스트레

www.inflearn.com

 

반응형
Comments