2023. 4. 8. 00:48ㆍdocker
도커와 기존 가상화 기술과 차이를 통해 컨테이너 이해
- 가상화 기술 나오기 전
- 한 대의 서버를 하나의 용도로만 사용
- 남는 서버 공간은 그대로 방치됨
- 하나의 서버에 하나의 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와 앱 간의 의존성 문제를 해결하고, 애플리케이션을 독립적으로 실행할 수 있습니다.
[정리]
'docker' 카테고리의 다른 글
[Docker] Docker 레디스(redis)로 띄우기 (0) | 2023.04.12 |
---|---|
[Docker] Docker 정리 (4) - Docker 명령어들 (0) | 2023.04.10 |
[Docker] Docker 정리 (3) - 이미지로 컨테이너 만들기 (0) | 2023.04.08 |
docker로 Mysql Import , Export (0) | 2022.11.23 |
[Docker] Docker 용어 및 흐름(1) (0) | 2022.06.29 |