컨테이너? 하면 물류 쪽의 컨테이너를 생각 할 수도 있지만, IT에선 같은 이름의 컨테이너 라는 기술이 있습니다.
컨테이너는 클라우드 가상화 기술로 Docker나 Kubernetes와 연관되어 있습니다.
사실 컨테이너라는 개념은 최근에 나온건 아니고 1998~2000년대 중반까지 정리되어 오픈소스화 됬던 개념입니다.
그럼 현재는 왜 화제가 되어 사용되고 있을까요?
컨테이너란?
논리적인 공간(컨테이너)을 만들어 다양한 어플리케이션을 설치해 하나의 서버처럼 사용할 수 있는 패키지입니다.
즉, 물류에서 사용하는 컨테이너 처럼 하나의 공간에 다양한 물건을 담아 옮기고, 각 서버에서 컨테이너를 구동해 그 안에 존재하는 어플리케이션을 별도의 설정 없이 쉽게 사용할 수 있습니다.
컨테이너 사용 이유
사실 개발을 하기위해 하나의 환경을 구축하기 위해선 꽤 많은 수고가 들어갑니다.
먼저 서버가 있어야 되고, OS를 구축해야하고, 개발을 위한 네트워크 통신 포트 구성과 개발 툴들의 설치, 서로의 연동 환경 구성 등등.. 많은 설정이 필요하, 또 호환성 등을 생각해서 툴의 버전과 OS 버전등을 일일히 맞춰서 설치하는 일이 필요합니다.
그럼 이런 환경을 각 서버나 개발자의 PC 별로 일일히 설치하기엔,, 반복적인 일들을 여러번 해야하고 또 환경 구성이 잘못되거나 에러가 발생하면 다시 처음부터 구성을 해야하는 등의 불편함이 존재합니다.
이런 반복적이고 불편한 세팅을 한번 해놓으면 쉽게 그 설정을 배포할 수 있다면 참 편하겠죠?
그래서 컨테이너를 사용하여 환경을 구축한 뒤, 다른 서버로 배포하면 이런 번거로운 부분을 최소화 할 수 있습니다.특히 컨테이너는 배포에 최적화 되어있고 호스트의 OS가 달라도 어디서든 구동 시킬 수 있다는 장점이 있습니다.
가상머신과 컨테이너
아마 컨테이너를 접해본 IT인들은 대부분 가상머신을 먼저 접해봤을 것이라 생각합니다.
대표적으로 VMware나 VirtualBox를 사용 해봤을 것입니다.
그래서 가상머신과 컨테이너는 별 차이점이 없어 보이는데 특별히 컨테이너를 사용하는 이유가 있는지 의문이 들 거라 생각됩니다. 이 둘의 가장 큰 차이점은 OS가상화 입니다.
가상머신은 사용하려면 처음에 OS 설치 부터 해야합니다.
윈도우면 windows server 2012의 iso를 다운받아야 하고 별도로 메모리, 하드 용량을 설정한 다음에 OS설치를 진행하고,, 리눅스면 또 ubuntu같은 iso를 다운받고 일일히 실제 PC처럼 별도로 세팅을 해줘야합니다.
그 이유는 호스트 OS와 다르게 독립적으로 OS를 구축해서 동작하기 때문입니다.
그래서 별도의 환경을 구성해서 만든거라 구동하는데 좀 시간이 걸립니다.
노트북으로 가상머신을 사용하는경우 메모리를 많이 잡아먹어서 PC가 멈추거나 가상머신의 OS가 작동하지 않는 경우도 있습니다.
반대로 컨테이너는 이런 부분에서 더 낫다고 할 수 있습니다.
컨테이너는 경량화에 초점을 두고 있어서 최소 메모리만 사용하도록 구성되어 있습니다.
그래서 실행 속도도 빠르고, 메모리를 최소한으로 잡아먹습니다.
또, 가상머신은 설치 OS별로 별도의 공간을 구상해줘야 하는데 컨테이너는 그럴 필요가 없습니다.
그 이유는 컨테이너의 OS 가상화라는 개념이 존재하기 때문입니다.
OS 가상화는 사용하려는 OS를 호스트 OS와 독립하는 방식이 아닌, 커널만 공유하여 '프로세스'로 실행하는 개념입니다. 그래서 별도의 공간이나 메모리 등을 설정해야하는 가상머신보다 호스트에게 부담도 적고, 실행 속도도 빠르다는 장점이 있습니다.
그림으로 보면 다음과 같습니다.
컨테이너 특징
가상머신과 다른 컨테이너는 크게 아래와 같은 특징이 있습니다.
1. 자원 낭비의 부담이 적다.
2. 실행 속도가 빠르다.
3. 배포 및 관리를 단순하게 해준다.
4. 컨테이너 이미지를 쉽게 공유 및 사용이 가능하다
특히 컨테이너는 배포에 특화되어 있어, 컨테이너 플랫폼만 서버에 존재한다면 쉽게 뿌리고 구동이 가능합니다.
또 컨테이너에 구동된 환경을 이미지화 할수 있습니다.
가상머신의 스냅샷과 비슷한 개념으로, 이런 이미지들을 만들어 웹 상에서 공유, 다운로드 하여 깃허브 처럼 필요한 환경을 자유자재로 사용할 수 있습니다.
컨테이너 동작원리
컨테이너 동작원리는 간단하게 그림으로 보면 아래와 같습니다.
컨테이너를 사용할 수 있는 docker, kubernetes 플랫폼 위에 하나의 컨테이너 공간을 만듭니다.
그리고 컨테이너 안에 어플리케이션(서비스)들을 구동시킵니다.
서비스는 1개가 될수도 있고, 여러개를 동시에 구동시킬수도 있습니다.
그리고 여러 컨테이너를 묶어서 포드라는 개념으로 정의할 수도 있습니다.
이부분은 추후 쿠버네티스에서 더 자세히 서술하겠습니다.
이렇게 컨테이너라는 기술을 플랫폼을 통해 사용할 수 있습니다.
'클라우드(AWS+Azure+GCP+etc)' 카테고리의 다른 글
[AWS] AWS Tech camp 기초실습 : VPC로 네트워크 구성하기 (1) | 2024.04.07 |
---|---|
[AWS] AWS Tech camp 기초 실습 : 계정 생성 및 MFA 설정 (0) | 2024.04.07 |
katacoda - 설치없이 쿠버네티스 사용하기 (0) | 2022.03.27 |
Minikube 설치하기(Windows 10) (0) | 2022.03.27 |
Docker GUI로 사용하기 (0) | 2022.03.05 |