[Docker] Docker 정리 (2) - Docker와 기존 가상화 기술 차이

2023. 4. 8. 00:48docker

도커와 기존 가상화 기술과 차이를 통해 컨테이너 이해

  • 가상화 기술 나오기 전
    • 한 대의 서버를 하나의 용도로만 사용
    • 남는 서버 공간은 그대로 방치됨
    • 하나의 서버에 하나의 OS, 하나의 프로그램만을 운영...
    • 안정적이지만 But 비효율적
  • 하이퍼 바이저 기반의 '가상화' 출현
    • 논리적으로 공간을 분할해 '가상머신(VM)'이라는 독립적인 가상 환경의 서버 이용 가능
    • 하이퍼 바이저는 호스트시스템(윈도우, 리눅스 등등이 될 수 있죠)에서 여러 개의 게스트OS를 구동할 수 있게 해주는 개꿀 소프트웨어입니다.
    • 그리고 하드웨어를 가상화하며 하드웨어와 각 VM을 모니터링하는 중간 관리자입니다.

하이퍼바이저와 도커

하이퍼바이저와 도커는 가상화 기술을 이용해서 컴퓨터 시스템의 자원을 효율적으로 사용할 수 있도록 도와주는 기술입니다.

  • 하이퍼바이저
    • 시스템전체를 가상화해서 가상머신(VM)을 생성하고 하드웨어 자원을 어러 개 가상머신으로 나눠 사용할 수 있습니다.
    • 각각의 가상머신은 독립적으로 OS를 가지고 서로 영향을 주지 않습니다.
  • 도커
    • 하이퍼바이저와 달리 호스트OS 위에 컨테이너를 생성해서 애플리케이션을 실행하는 가상화 기술
    • 컨테이너는 가상 머신과 달리 OS를 전부 가지고 있지 않고, 호스트 OS의 자원을 공유해 실행
    • 이를 통해 가볍고 빠르게 애플리케이션을 실행할 수 있습니다

공통점

도커 컨테이너와 가상 머신은 기본 하드웨어에서 환경을 격리 시켜서 애플리케이션을 실행합니다.

차이점

가장 큰 차이점은 격리된 환경을 얼마나 격리 시키느냐의 차이입니다.

  • 도커는 VM과 비교했을때 컨테이너는 하이퍼바이저와 GuestOS가 필요 없어서 더 가볍고 오버헤드가 적음!
  • 어플리케이션을 실행할 때는 컨테이너 방식에서는 호스트OS 위에서 바로 띄워서 같은 커널을 공유
  • 가상화머신은 그냥.. 윈도우OS위에 리눅스 까는 거라 비교적 사용법이 간단한데 굉장히 느리다

 

위 그림의 도커를 자세히 그림

하래 하드디스크/CPU/메모리가 하드웨어 영역인데 다른 프로그램들이 같은 커널을 공유하고 있음

그리고 컨테이너들을 '격리'시키는데 어떻게 도커 컨테이너들을 격리 시키나요?

 

먼저 리눅스의 C Group과 네임스페이스를 알아야함

이것들은 컨테이너와 Host에서 실행되는 다른 프로세스 사이에 벽을 만드는 리눅스 커널 기능들입니다.

 

C Group

CPU, 메모리, Network Bandwith, HD, I/O 등 프로세스 그룹의 시스템 리소스 사용량이 너무 많으면 그 어플리케이션 같은 걸 C group에 넣어 CPU와 메모리 사용제한 가능

 

네임스페이스

- 하나의 시스템에서 프로세스를 격리할 수 있는 가상화 기술

- 별개의 독립된 격리된 환경을 제공하는 경량 프로세스 가상화 기술

 

 

요약

- 요약하면 하이퍼바이저는 시스템 전체를 가상화해 VM생성 /도커는 호스트OS위 컨테이너 생성해 애플리케이션을 실행하는 가상화 기술입니다.

- 일반적으로 앱은 호스트OS(EC2서버 OS라고 치면)에서 직접 실행되지만 도커를 사용하면 앱을 컨테이너란 격리된 환경에서 실행시켜주는것!
- 이를 통해 호스트OS와 앱 간의 의존성 문제를 해결하고, 애플리케이션을 독립적으로 실행할 수 있습니다.

 

[정리]

https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%8F%84%EC%BB%A4-ci