4.컨테이너 개요
가상화로 인해 발생하는 유휴(Idle) 자원의 낭비를 막고자 컨테이너(Container)라는 개념이 등장하게 됨
컨테이너는 화물(Application)을 정해진 규격에 맞게 적재할 수 있도록 되어 있기 때문에,
다른 화물들과 독립적으로 격리할 수 있음

2. 격리된 환경으로 빠르고 간편하게 서비스를 배포
바다가 인터넷 환경이라면, 개발한 서비스는 하나의 배라고 볼 수 있으며,
배에 선적된 컨테이너는 서비스 운영에 필요한 독립적으로 격리된 개별 서버들이라고 볼 수 있음
ex. Next.js, Spring, DBMS 서버 프로세스
→ 배는 컨테이너를 싣고 바다를 항해함
컨테이너 런타임 기술 중 하나인 Docker는 컨테이너 엔진(Container Engine)인 Docker Engine을 통해 호스트 운영체제(Host OS)의 커널을 공유하여 CPU나 메모리 등의 자원을 격리한 가상의 공간인 ‘컨테이너(Container)‘를 생성함
왼쪽은 VirtualBox같은 가상화 소프트웨어를 통한 서버 구성 방식
오른쪽은 Docker와 같은 컨테이너 런타임 기술을 통한 서버 구성 방식
Image Ref.
2-1. 가상화와 컨테이너 방식의 비교
가상화와 컨테이너 방식을 비교하면 다음과 같음
| 구분 | 가상화 | 컨테이너 |
|---|---|---|
| 동작 방식 | 각 App들은 개별 OS에서 동작 | 여러 App들은 하나의 OS 커널을 공유 |
| 부팅 시간 | 부팅하는데 최소 몇 분의 시간이 소요됨 | 몇 초내로 컨테이너가 생성됨 |
| 버전 관리 여부 | 불가능 | Docker Image 개념을 활용하여 버전 관리 가능 |
| OS | Windows / Linux 등 여러 OS 선택 가능 | Host OS 하나로 동작 |
| 이미지 용량 | 최소 1GiB | 보통 100 MiB 미만 |
Last updated on
