다음을 통해 공유


컨테이너 및 Docker 소개

팁 (조언)

이 콘텐츠는 .NET Docs 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 컨테이너화된 .NET 애플리케이션용 .NET 마이크로 서비스 아키텍처인 eBook에서 발췌한 내용입니다.

컨테이너화된 .NET 애플리케이션을 위한 .NET 마이크로서비스 아키텍처 eBook의 표지 썸네일.

컨테이너화는 애플리케이션 또는 서비스, 이에 해당하는 종속성 및 (배포 매니페스트 파일로 일반화된) 구성이 컨테이너 이미지로 패키지되는 소프트웨어 개발 방법입니다. 컨테이너화된 애플리케이션은 단위로 테스트하고 컨테이너 이미지 인스턴스로 OS(호스트 운영 체제)에 배포할 수 있습니다.

선적 컨테이너가 화물 내부에 관계없이 선박, 기차 또는 트럭으로 상품을 운송할 수 있도록 허용하는 것처럼 소프트웨어 컨테이너는 다른 코드와 종속성을 포함할 수 있는 소프트웨어 배포의 표준 단위 역할을 합니다. 이러한 방식으로 소프트웨어를 컨테이너화하면 개발자와 IT 전문가가 거의 또는 전혀 수정하지 않고 환경에 배포할 수 있습니다.

또한 컨테이너는 공유 OS에서 애플리케이션을 서로 격리합니다. 컨테이너화된 애플리케이션은 OS(Linux 또는 Windows)에서 실행되는 컨테이너 호스트 위에서 실행됩니다. 따라서 컨테이너의 공간은 VM(가상 머신) 이미지보다 훨씬 작습니다.

그림 2-1에 표시된 것처럼 각 컨테이너는 전체 웹 애플리케이션 또는 서비스를 실행할 수 있습니다. 이 예제에서 Docker 호스트는 컨테이너 호스트이고 App1, App2, Svc 1 및 Svc 2는 컨테이너화된 애플리케이션 또는 서비스입니다.

VM 또는 서버에서 실행되는 4개의 컨테이너를 보여 주는 다이어그램

그림 2-1. 컨테이너 호스트에서 실행되는 여러 컨테이너

컨테이너화의 또 다른 이점은 확장성입니다. 단기 작업에 대한 새 컨테이너를 만들어 빠르게 확장할 수 있습니다. 애플리케이션 관점에서 이미지 인스턴스화(컨테이너 만들기)는 서비스 또는 웹앱과 같은 프로세스를 인스턴스화하는 것과 유사합니다. 그러나 안정성을 위해 여러 호스트 서버에서 동일한 이미지의 여러 인스턴스를 실행하는 경우 일반적으로 각 컨테이너(이미지 인스턴스)를 다른 호스트 서버 또는 다른 장애 도메인의 VM에서 실행하려고 합니다.

즉, 컨테이너는 전체 애플리케이션 수명 주기 워크플로에서 격리, 이식성, 민첩성, 확장성 및 제어의 이점을 제공합니다. 가장 중요한 이점은 Dev와 Ops 간에 제공되는 환경의 격리입니다.