왜 컨테이너를 써야하나요?
초반에는 Bare Metal(소프트웨어가 설치되어 있지 않은 깡통 시스템)에다가 여러개의 애플리케이션을 운영함.
하나의 시스템에서 여러개의 애플리케이션 운영.
시대가 발전하면서 하드웨어 가격 싸짐, 성능 좋아짐
Bare Metal 시스템에 하이퍼바이저라는 것을 만들어서 하이퍼바이저의 sw적 기술로 vm(가상컴퓨터)을 만들고 거기에 필요한 애플리케이션을 올려서 사용
-> 가상화 플랫폼
시대가 또 발전해서 애플리케이션을 운영할때
클라이언트 요구량에 따라서 자유롭게 확장, 축소(필요한 서버를 여러개, scale out, 또는 scale in)할 수 있는 애플리케이션이 필요해졌다.
서비스 중단없이 운영해야하는 어플리케이션 환경이 필요해짐.
이것은 앞서 본 가상환경으로는 어려움이 있음.
Bare Metal 시스템에 os 올리고 그 위에 컨테이너 엔진을 올린다.
도커는 이 컨테이너 엔진 중에 하나이다.
컨테이너 플랫폼 위에 컨테이너 애플리케이션을 동작시킨다.
컨테이너로 운영하는 애플리케이션은 용량이 적음. 최소의 환경만 들어가기 때문에.
컨테이너끼리 격리되어있고 용량이 적기때문에 확장성이 좋음. 배포가 쉬움.
왜 리눅스에서 컨테이너를 동작시켜야 하나요?
컨테이너는 리눅스 커널의 기능으로 만들어졌기 때문에.
리눅스 커널의
- chroot : 독립된 공간 형성
- namespace : 생성된 독립된 공간이 하나의 가상 시스템인 것처럼 컨테이너 끼리 완전히 분리될 수 있는 6가지 isolate 기능 지원
- cgroup : 필요한만큼 HW 지원
기능을 기반으로 컨테이너가 생성됨.
리눅스 커널에 있는 storage, namespace, networking 기능들을 컨테이너 플랫폼에서 쓸 수 있도록 지원해주는 것이 컨테이너 엔진(도커)이다.
즉 리눅스 커널이 없으면 컨테이너를 동작시킬 수 없다.
windows와 macos 에서는 리눅스 커널이 없기때문에 hypervisor 를 활성화시켜서 그 위에 컨테이너를 동작시킨다.
리눅스는 커널이 기본적으로 있기 때문에 그 위에 바로 컨테이너 플랫폼을 올려서 사용할 수 있다. 그래서 리눅스에서 사용하는 것이다.
일반 프로그램과 컨테이너의 차이점이 무엇인가요?
하는 일은 똑같음. 구조가 다른 것이다.
일반 프로그램은 컴퓨터에 필요한 것을 설치하고(사용하는 언어, 여러 라이브러리 등) 만든 애플리케이션을 동작시킴. 클라이언트로부터 요청도 이 컴퓨터로 오고 응답도 이 컴퓨터에서 준다.
컨테이너는 소스코드는 동일하게 가지고 있음. 그리고 컨테이너를 빌드함. 도커파일을 통해서 컨테이너를 빌드 할 수 있음.
FROM node:12 : node를 먼저 설치해서 환경을 만들고
COPY app.js /app.js
ENTRYPOINT ["node", "app.js"]
: 만들어놓은 app.js 를 동작시키도록 저장하고 실행해주는 컨테이너를 빌드
이렇게 환경세팅이 완료된 컨테이너에 app.js 를 실행함.
컨테이너가 요청, 응답을 해줌.
컨테이너를 쓰는 이유가 뭔가요?
1. 개발자가 만든 프로그램을 어디서든 동작시킬 수 있음.
-> 예전에는 개발자가 개발한 프로그램을 고객사에서 돌리려고 할 때 HW 스펙, OS, 언어, 라이브러리, 버전정보 등 환경이 달라서 어려움이 있었음.
하지만 컨테이너는 이런 환경을 컨테이너 안에 설치해놓았기 때문에 고객사에서도 바로 운영할 수 있음.
2. 확장, 축소(scale out, scale in)하기에 적합한 구조를 가지고 있음.
1G OS에 100MB 애플리케이션을 동작시키도 있다고 할 때
scale out 하려면 똑같이 1G OS, 100MB 애플리케이션을 확장해야 했다.
하지만 컨테이너는
컨테이너화 한 100MB 애플리케이션만 추가로 확장히면 됨. 때문에 scale out, scale in 속도도 더 빠름.
MSA에 적합함.
출처
'도커' 카테고리의 다른 글
Docker Hub 에서 429 (too many request) 에러가 났다. (0) | 2023.04.20 |
---|---|
도커 실습 : 컨테이너 이미지 다운로드 및 실행 (0) | 2023.02.17 |
컨테이너와 컨테이너 이미지의 차이 (0) | 2023.02.17 |
댓글