컨테이너(Containers)
새로 만든 애플리케이션을 다른 환경에서 실행할 때 문제가 자주 발생
-> 로컬 설정, 함수 라이브러리, 네트워크 기술, 보안 정책, 스토리지 차이 등
이를 해결하기 위해 애플리케이션과 함께 그 실행에 필요한 라이브러리, 바이너리, 구성 파일 등을 패키지로 묶어서 배포
-> 컨테이너
가상화
컨테이너는 OS를 제외한 애플리케이션에 필요한 모든 파일을 패키징한 것
-> OS 레벨 가상화
가상머신(VM)은 서버에 하이퍼바이저를 설치하고 그 위에 가상 OS와 애플리케이션을 패키징한 것
-> 하드웨어 레벨 가상화
하드웨어 레벨 가상화의 경우 패키징에 OS를 포함해야되기 때문에 수 GB의 용량을 갖지만 OS 레벨 가상화는 수십 MB 밖에 되지 않는다
-> 한 서버에서 가동할 수 있는 가상화 개수가 10배 가까이 차이난다
-> OS 부팅 여부도 갈리기 때문에 서비스 시작까지 걸리는 시간에서도 차이가 난다
OS 레벨 가상화는 메인 OS와의 접점이 더 많기 때문에 메인 OS가 해킹 당할 가능성이 더 높다
리눅스 외에 다른 OS를 사용하기는 힘들다
리눅스 컨테이너(LXC)
하나의 리눅스 시스템 위에서 프로세스들을 격리시켜서 독자적인 시스템 환경을 구축
-> 리눅스 컨테이너에서 가상화된 프로세스들은 리눅스을 호환해야한다
프로세스를 격리하기 때문에 CPU나 메모리 낭비가 적다
이미지(image)
컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것
이후 실행으로 추가되거나 변경되는 값은 컨테이너에 저장되고 이미지에는 반영되지 않는다
같은 이미지로 여러 컨테이너를 만들 수 있고 컨테이너의 상태는 이미지에 영향을 주지 않는다
도커(Docker)
컨테이너 기반 오픈소스 가상화 플랫폼
다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순화
백엔드 애플리케이션, DB서버, 메시지 큐 등 어떤 애플리케이션이라도 컨테이너로 추상화할 수 있다
PC, AWS, Azure, Google Cloud 등 어디에서든 실행할 수 있다
거의 모든 OS에서 실행할 수 있는 가상화된 컨테이너 기반을 형성 -> 도커 엔진
호스트 OS와 컨테이너 간의 인터페이스를 제공
초기에는 리눅스에서 사용하도록 설계되었지만 가상화를 통해 Windows와 MacOS에서도 작동 가능
'기본' 카테고리의 다른 글
Context Switch (0) | 2023.03.14 |
---|---|
HTTP 메서드 (0) | 2023.03.12 |
ORM / SQL (0) | 2023.02.27 |
싱글톤 패턴(Singleton Pattern) (0) | 2023.02.16 |
프로그래밍 언어 및 패러다임 (0) | 2023.02.12 |