topics containers 컨테이너란 무엇인가요?
IBM의 컨테이너 솔루션 살펴보기 클라우드 업데이트 구독
컴퓨터 모니터, 서버, 구름, 점의 픽토그램 콜라주가 포함된 일러스트
컨테이너란 무엇인가요?

컨테이너는 애플리케이션 코드가 라이브러리 및 종속 요소와 함께 공통된 방식으로 패키징되어 데스크톱, 기존 IT 또는 클라우드 등 어디서나 코드를 실행할 수 있도록 하는 실행 가능한 소프트웨어 단위입니다.

컨테이너는 OS 커널의 기능(예: Linux 네임스페이스 및 c그룹, Windows 사일로 및 작업 객체)을 사용하여 프로세스를 격리하고 해당 프로세스가 액세스할 수 있는 CPU, 메모리 및 디스크의 양을 제어하는 일종의 운영 체제(OS) 가상화를 활용합니다.

가상 머신과 달리 컨테이너는 모든 인스턴스에 게스트 OS를 포함하지 않아도 되고, 대신 호스트 OS의 기능과 리소스를 사용할 수 있기 때문에 작고 빠르며 이식성이 뛰어납니다.

컨테이너는 수십 년 전에 FreeBSD Jails 및 AIX 워크로드 파티션과 같은 버전과 함께 처음 등장했지만, 현대 개발자들은 대부분 2013년에 Docker의 도입과 함께 현대 컨테이너 시대가 시작되었다고 기억합니다.

전략적 앱 현대화를 통한 디지털 혁신 주도

전략적 애플리케이션 현대화는 혁신적 성공의 핵심이며 수익을 증대하고 유지 관리 및 운영 비용을 낮출 수 있습니다.

관련 내용

DaaS 가이드 등록하기

컨테이너와 가상 머신 비교

컨테이너가 기존 VM(가상 머신)과 어떻게 다른지 알아보면 컨테이너를 더 잘 이해할 수 있습니다. 온프레미스든 클라우드든, 기존 가상화에서는 하이퍼바이저를 사용하여 물리적 하드웨어를 가상화합니다. 그런 다음 각 VM에는 애플리케이션 및 관련 라이브러리 및 종속성과 함께 게스트 OS와 OS 실행에 필요한 하드웨어의 가상 복사본이 포함됩니다.

컨테이너는 기본 하드웨어를 가상화하는 것이 아니라 운영 체제(일반적으로 Linux)를 가상화하므로 각 개별 컨테이너에는 오직 애플리케이션과 해당 라이브러리 및 종속성만 포함되어 있습니다. 컨테이너는 게스트 OS가 없어서 매우 가볍기 때문에 빠르고 휴대성이 뛰어납니다.

이 비교에 대한 자세한 내용은 '컨테이너와 VM: 차이점은 무엇인가요?'를 참조하세요.

컨테이너의 장점

VM과 비교할 때 컨테이너의 가장 큰 장점은 가볍고 이식 가능한 추상화 수준을 제공한다는 것입니다. 주요 장점은 다음과 같습니다.

경량: 컨테이너는 머신 OS 커널을 공유하므로 애플리케이션당 전체 OS 인스턴스가 필요하지 않으며 컨테이너 파일을 작게 만들어 리소스를 쉽게 사용할 수 있습니다. 특히 VM에 비해 크기가 작기 때문에 컨테이너는 빠르게 가동되고 수평적으로 확장되는 클라우드 네이티브 애플리케이션을 더 잘 지원할 수 있습니다.

이식 가능성 및 플랫폼 독립성: 컨테이너는 모든 종속성을 가지고 있으므로 소프트웨어를 한 번 작성하고 나면 다시 구성할 필요 없이 노트북, 클라우드 및 온프레미스 컴퓨팅 환경 전반에서 실행할 수 있습니다.

최신 개발 및 아키텍처 지원: 컨테이너는 플랫폼 전반에 걸친 배포 이식성/일관성과 작은 크기의 조합 덕분에  DevOps서버리스 및 정기적인 코드 배포를 조금씩 사용하여 구축되는 마이크로서비스와 같은 최신 개발 및 애플리케이션 패턴에 이상적입니다.

활용도 향상: 기존의 VM과 마찬가지로 컨테이너 역시 개발자와 운영자가 물리적 머신의 CPU 및 메모리 사용률을 개선하는 데 도움을 줍니다. 컨테이너는 마이크로서비스 아키텍처도 지원하기 때문에 애플리케이션 구성 요소를 더 세밀하게 배포하고 확장할 수 있다는 점에서 더욱 발전했다고 할 수 있습니다. 이는 단일 구성 요소의 부하로 인해 전체 모놀리식 애플리케이션을 확장해야 하는 것에 비교하면 매력적인 대안입니다.

최근 IBM 설문조사에서 개발자와 IT 경영진은 컨테이너 사용의 여타 많은 장점을 보고했습니다.

보고서 전문 다운로드: 엔터프라이즈 내 컨테이너

컨테이너 사용 사례

컨테이너는 특히 클라우드 환경에서 점점 더 중요해지고 있습니다. 애플리케이션과 워크로드를 위한 범용 컴퓨팅 플랫폼으로 VM을 대체하기 위해 컨테이너를 고려하는 조직이 많아지고 있습니다. 그러나 이러한 광범위한 범위 중에서도 컨테이너가 특히 중요하게 여겨지는 사용 사례가 있습니다.

  • 마이크로서비스: 컨테이너는 작고 가볍기 때문에 애플리케이션이 느슨하게 결합되고 독립적으로 배포 가능한 여러 개의 작은 서비스로 구성된 마이크로서비스 아키텍처와 잘 어울립니다.
  • DevOps: 아키텍처로서의 마이크로서비스와 플랫폼으로서의 컨테이너의 조합은 소프트웨어를 빌드, 배포 및 실행 방식으로 DevOps를 채택하는 많은 팀에게 공통된 기반입니다.
  • 하이브리드 및 멀티클라우드: 컨테이너는 노트북, 온프레미스, 클라우드 환경 등 어디서나 일관되게 실행될 수 있기 때문에 조직이 자체 데이터 센터와 함께 여러 퍼블릭 클라우드를 혼합하여 운영하는 하이브리드 클라우드 및 멀티 클라우드 시나리오에 가장 적합한 기본 아키텍처입니다.
  • 애플리케이션 현대화 및 마이그레이션: 애플리케이션 현대화를 위한 가장 일반적인 접근 방식 중 하나는 클라우드 마이그레이션에 대비하여 애플리케이션을 컨테이너화하는 것입니다.
컨테이너화

컨테이너를 활용하기 위해서는 소프트웨어를 다르게 설계하고 패키징해야 하며, 이 프로세스를 일반적으로 컨테이너화라고 합니다.

애플리케이션을 컨테이너화할 때는 관련 환경 변수, 구성 파일, 라이브러리 및 소프트웨어 종속성으로 애플리케이션을 패키징하는 것이 프로세스에 포함됩니다. 그 결과, 컨테이너 플랫폼에서 실행할 수 있는 컨테이너 이미지가 생성됩니다.

Kubernetes를 사용한 컨테이너 오케스트레이션

기업들이 최신 클라우드 네이티브 아키텍처의 일부로 컨테이너를 도입하기 시작하면서, 분산 시스템에서 수백(또는 수천) 개의 컨테이너를 관리해야 하는 복잡성과 개별 컨테이너의 단순성이 충돌하기 시작했습니다.

이러한 문제를 해결하기 위해 수명 주기 전반에 걸쳐 대량의 컨테이너를 관리하는 방법으로 컨테이너 오케스트레이션이 등장했습니다.

  • 프로비저닝
  • 이중화
  • 상태 모니터링
  • 리소스 할당
  • 확장 및 로드 밸런싱
  • 물리적 호스트 간 이동

많은 컨테이너 오케스트레이션 플랫폼(예: Apache Mesos, Nomad 및 Docker Swarm)이 출시되었지만, Google이 2014년에 도입한 오픈 소스 프로젝트인 Kubernetes가 순식간에 가장 인기 있는 컨테이너 오케스트레이션 플랫폼이자 업계 대다수가 표준화의 기반으로 삼고 있는 플랫폼이 되었습니다.

Kubernetes를 사용하면 개발자와 운영자가 YAML 파일을 통해 전체 컨테이너 환경의 원하는 상태를 선언할 수 있으며, 그러면 Kubernetes는 특정 애플리케이션 또는 워크로드의 지정된 수의 인스턴스 배포, 해당 애플리케이션이 실패할 경우 재부팅, 로드 밸런싱, 자동 확장, 다운타임 제로 배포 등의 활동을 통해 해당 상태를 설정하고 유지하는 모든 처리 작업을 수행합니다.

Kubernetes는 현재 Linux Foundation의 후원을 통해 제공업체에 구애받지 않는 업계 그룹인 Cloud Native Computing Foundation(CNCF)가 운영하고 있습니다.

Istio, Knative, 그리고 확장되는 컨테이너 에코시스템

컨테이너가 애플리케이션을 패키징하고 실행하는 인기 있는 방법으로 계속 탄력을 받으면서 프로덕션 사용 사례를 수용하고 확장하도록 설계된 도구 및 프로젝트의 에코시스템이 계속 성장하고 있습니다. Kubernetes 외에도 컨테이너 에코시스템에서 가장 인기 있는 두 가지 프로젝트는 Istio와 Knative입니다.

Istio

개발자가 컨테이너를 사용하여 마이크로서비스 아키텍처를 구축하고 실행하면서, 관리 문제가 개별 컨테이너의 수명 주기 고려 사항을 넘어 수많은 소규모 서비스들이 서로 연결되고 관련되는 방식((흔히 '서비스 메시'라고 함) )에까지 영향을 미칩니다. Istio는 개발자가 검색, 트래픽, 모니터링, 보안 등과 관련된 문제를 더 쉽게 관리할 수 있도록 하기 위해 만들어졌습니다. 

Istio에 대해 자세히 알아보기

Knative

서버리스 아키텍처는 특히 클라우드 네이티브 커뮤니티 내에서 인기가 계속 높아지고 있습니다. 예를 들어 Knative는 컨테이너화된 서비스를 서버리스 기능으로 배포할 수 있다는 점에서 상당한 가치를 제공합니다.

서버리스 기능은 서버처럼 항상 실행되면서 필요할 때만 응답하는 대신, 요청이 없으면 아예 실행되지 않는 '제로 스케일링'이 가능합니다. 수만 개의 컨테이너에 이 모델을 적용하면 막대한 양의 컴퓨팅 성능을 절약할 수 있습니다.  

관련 솔루션
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud는 퍼블릭 및 하이브리드 환경에서 속도, 시장 대응력, 확장성, 안정성을 위해 OpenShift를 사용합니다.

Red Hat OpenShift on IBM Cloud 살펴보기
IBM Cloud Pak for Applications

배포, 새로운 클라우드 네이티브 애플리케이션 구축, 기존 애플리케이션 리팩토링 또는 리플랫포밍 등 CP4Apps는 모든 것을 다룹니다.

IBM Cloud Pak for Applications 살펴보기
IBM Cloud Satellite

IBM Cloud Satellite를 통해 온프레미스, 에지, 퍼블릭 클라우드 환경 등 어느 곳에서나 일관성 있는 클라우드 서비스를 실행할 수 있습니다.

IBM Cloud Satellite 살펴보기
IBM Cloud Code Engine

컨테이너 이미지, 배치 작업 또는 소스 코드를 서버리스 워크로드로 실행하므로 크기 조정, 배포, 네트워킹 또는 확장이 필요하지 않습니다.

IBM Cloud Code Engine 살펴보기
IBM Cloud Container Registry

IBM Cloud Container Registry는 이미지를 관리하고 안전 문제를 모니터링할 수 있는 개인용 레지스트리를 제공합니다.

IBM Cloud Container Registry 살펴보기
IBM Turbonomic으로 Kubernetes 최적화

Kubernetes 환경과 미션 크리티컬 앱이 SLO를 충족하는 데 필요한 작업을 정확하게 수행할 수 있도록 올바른 리소스 할당 작업 및 작업 시기를 자동으로 결정합니다.

IBM Turbonomic 살펴보기
리소스 엔터프라이즈의 컨테이너

IBM의 새로운 연구 결과는 컨테이너 및 Kubernetes 도입의 급증하는 모멘텀을 보여 줍니다.

클라우드와 기존 IT의 장점 결합

컨테이너 오케스트레이션은 어디서나 워크로드를 구축하고 관리할 수 있는 오픈 하이브리드 클라우드 전략의 핵심 구성 요소입니다.

Docker란?

Docker는 컨테이너화된 애플리케이션을 구축, 배포, 관리하기 위한 오픈 소스 플랫폼입니다.

다음 단계 안내

Red Hat OpenShift on IBM Cloud는 개발자가 빠르고 안전하게 엔터프라이즈 워크로드를 컨테이너화하여 Kubernetes 클러스터에 배포할 수 있는 방법을 제공합니다. 보안 관리, 규정 준수 관리, 배포 관리, 지속적인 라이프사이클 관리와 관련된 지루하고 반복적인 작업을 제거하세요. 

Red Hat OpenShift on IBM Cloud 살펴보기 무료로 시작하기