컨테이너는 소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지입니다.
컨테이너화를 통해 책임을 깔끔하게 분리할 수 있습니다. 즉, 개발자는 애플리케이션의 로직과 종속 항목에 집중하고, IT 운영팀은 특정 소프트웨어 버전 및 구성과 같은 애플리케이션의 세부 요소 대신 배포 및 관리에 집중할 수 있습니다.
컨테이너는 Linux, Windows, Mac 등의 운영체제를 가리지 않고, 가상 머신, 물리적 서버, 개발자 컴퓨터, 데이터 센터, 온프레미스 환경, 퍼블릭 클라우드 등 사실상 어느 환경에서나 구동되므로 개발 및 배포가 크게 쉬워집니다.
컨테이너는 운영체제 수준에서 CPU, 메모리, 스토리지, 네트워크 리소스를 가상화하므로 개발자에게 다른 애플리케이션으로부터 논리적으로 격리된 OS 환경을 제공합니다.
흔히 우리가 가상머신을 띄운다고 하면 VM을 생각하고 또는 그럴것입니다. 그렇다면 둘다 가상화시켜주는 것인데 무엇이 차이점일까요?
VM은 기존의 가상화에서는 하이퍼바이저를 활용하여 물리적 하드웨어를 가상화합니다. 그리고
기본 하드웨어에 대한 액세스 권한을 갖는 호스트 운영체제 위에서 Linux 또는 Windows 같은 게스트 운영 체제를 실행하는 것이며 이는 우리에게 익숙합니다.
예를 들어, 윈도우 가상머신을 띄운다는 윈도우 이미지를 VM위에 띄운다는 말을 뜻하기도 합니다.
컨테이너는 가상 머신과 마찬가지로 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련해 줍니다.
VM과의 유사점은 여기까지입니다 VM과 차이점은 아래와 같습니다!
컨테이너를 사용하면 개발자와 IT 운영팀이 훨씬 작은 단위로 업무를 수행할 수 있으므로 그에 따른 이점이 훨씬 많습니다.
컨테이너는 애플리케이션을 실제 구동 환경으로부터 추상화할 수 있는 논리 패키징 메커니즘을 제공합니다. 이러한 분리를 통해 프라이빗 데이터 센터나 퍼블릭 클라우드, 심지어 개발자의 개인 노트북에 이르기까지 어떤 환경으로든 컨테이너 기반 애플리케이션을 쉽게 지속적으로 배포할 수 있습니다.
컨테이너를 사용하면 개발자가 종속 항목과 환경에 미치는 영향을 신경 쓰지 않고 훨씬 더 빠르게 개발을 진행할 수 있습니다.
컨테이너는 경량이며 필요한 컴퓨팅 리소스만 사용하면 됩니다. 따라서 애플리케이션을 효율적으로 구동할 수 있습니다.
컨테이너는 거의 모든 곳에서 구동할 수 있습니다. 소프트웨어 구동 환경이 무엇이든 컨테이너를 사용할 수 있습니다.