리눅스 : 프로세스별 자원을 격리해서 사용하는 cgroup과 특정 디렉터리로 권한을 제한하는 chroot 등 격리 환경 구성
컨테이너 : 디스크의 파일 변경 사항을 layer 형태로 저장하는 파일시스템
도커 : 컨테이너를 손쉽게 사용할 수 있도록 만듦
- 그 외에도 containerd, runc, cri-o 등의 컨테이너 런타임이 있음.
컨테이너 기술이란?
컨테이너는 애플리케이션을 언제든 실행 가능하도록 필요한 모든 요소를 하나의 런타임 환경(이미지)으로 패키징 한 논리적 공간이다.
👉 즉, 애플리케이션과 종속 항목을 하나로 묶어 운영 시스템을 가상화한 경량의(최소한의 Image) 격리된 프로세스.
The future of Linux Containers - YouTube
# 컨테이너의 특징
- 운영체제 수준의 가상화 제공 (컨테이너의 OS에는 커널이 없음, OS에 있는 커널을 도커가 사용한다.)
- 독립성을 갖고 있기 때문에 다른 컨테이너에 영향을 주지 않는 `stateless` 환경 제공
- 서버구성, OS 설치, 네트워크, 개발 도구 구성 등의 반복적이고 불편한 작업에 시간을 낭비하지 않고 개발자는 애플리케이션 개발 그 자체에 집중
- 한 번에 여러 개의 컨테이너를 동시에 실행 가능 (Docker에서는 docker compose 기술을 통해 구현)
- 어떤 환경에서도 동작 가능한 이식성 보유
- 컨테이너 자체 애플리케이션 환경에 대한 관리만 요구되므로, 지속적 서버관리 비용을 절감한다.
- 개발팀과 운영팀의 업무 분리로 각자의 업무와 세분화된 관리에 집중
컨테이너 종류 : 1. 시스템 2. 어플리케이션 3. 라우터 컨테이너 |
# 시스템(OS) 컨테이너
- 호스트 OS 위에 Ubuntu와 같은 배포판 리눅스 image를 통해 배포되는 컨테이너.
- 내부에 다양한 애플리케이션 및 라이브러리 도구를 설치, 실행 가능하다.
- LXC, LXD, OpenVZ, Linux VServer, BSD Jails 등
- 리눅스 컨테이너 기술은 LXC(LinuX Container)를 이용한 시스템 컨테이너화로 시작
# ⭐애플리케이션 컨테이너 (👈도커를 사용하는 이유)
- 시스템 컨테이너 이후 애플리케이션 컨테이너 기반의 Docker가 출시되었고, 초반의 Docker는 LXC를 활용한 컨테이너를 만들었음
- 지속된 컨테이너의 발전으로 Docker는 containerd, runC를 이용하는 방식으로 변경됨.
- `runC` : 하위단의 호스트OS와 직접적 통신, 커널 기술의 공유를 통해 컨테이너 생성을 지원
- `containerd` : 생성된 컨테이너의 라이프사이클 관리 지원
- `dockerd` : 사용자 환경에서의 명령 전
- 단일 애플리케이션 실행을 위해 해당 서비스를 패키징하고 실행하도록 설계된 컨테이너
- 3-tier 어플리케이션과 같은 경우 각 tier(frontend - backend - DB)를 개별 컨테이너로 실행하여 연결
- 대표적으로 Docker container runtime, Rocket
가상화
서버, 스토리지, 네트워크, 애플리케이션 등을 가상화하여 하드웨어 리소스를 효율적으로 사용하는데 목적이 있고, 이를 통해 기업은 효율적인 자원활용, 자동화된 IT 관리, 빠른 재해 복구 등의 장점을 가진다.
물리적 하드웨어 유지관리 대신 SW적으로 추상화된 가상화를 통해 제한된 부분을 쉽게 관리하고 유지 가능하다.
하이퍼바이저 기반의 VM을 통해 수행 (Vmware, Virtual Box)
컨테이너 가상화 | VM 가상화 |
이미지화하여 HostOS와 격리된 환경을 제공한다. | |
경량이면서 호스트 OS의 커널을 공유하는 OS수준의 가상화 구 (👉즉, 컨테이너에는 커널이 없음, Booting도 없음) ✌️원하는 애플리케이션 환경을 빠르게 번들링하여 패키징 |
실제 호스트 OS와 같이 별도의 GuestOS(커널)을 두고 원하는 애플리케이션을 설치하는 HW 수준의 가상화 구현 |
참고 (가상머신)
가장 적당한 HW 리소스를 할당함으로써 HW를 효율적으로 사용한다.
요즘에는 수평형태 (Horizontal)로 scale out 해주면서 비즈니스 연속성을 제공한다.
반응형
'Container' 카테고리의 다른 글
[Azure] 쇼핑몰 만들기 실습 (0) | 2024.11.15 |
---|---|
[Azure] 키 자격모음, PostgresSQL 서버 관리 (1) | 2024.11.15 |
PWD(Play with Docker) (0) | 2024.01.25 |