다음을 통해 공유


Docker 컨테이너, 이미지 및 레지스트리

팁 (조언)

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

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

Docker를 사용하는 경우 개발자는 앱 또는 서비스를 만들고 컨테이너 이미지에 앱 및 해당 종속성을 패키지합니다. 이미지는 앱 또는 서비스와 그 구성 및 종속성을 정적으로 표현합니다.

앱 또는 서비스를 실행하기 위해 앱의 이미지가 인스턴스화되어 Docker 호스트에서 실행되는 컨테이너를 만듭니다. 컨테이너는 처음에 개발 환경 또는 PC에서 테스트됩니다.

개발자는 이미지 라이브러리 역할을 하며 프로덕션 오케스트레이터에 배포할 때 필요한 레지스트리에 이미지를 저장해야 합니다. Docker는 Docker 허브를 통해 공용 레지스트리를 유지 관리합니다. 다른 공급업체는 Azure Container Registry를 포함하여 다양한 이미지 컬렉션에 대한 레지스트리를 제공합니다. 또는 기업에서 자체 Docker 이미지에 대한 프라이빗 레지스트리 온-프레미스를 가질 수 있습니다.

그림 2-4에서는 Docker의 이미지 및 레지스트리가 다른 구성 요소와 어떻게 관련되어 있는지 보여 줍니다. 또한 공급업체의 여러 레지스트리 제품도 보여 줍니다.

Docker의 기본 분류를 보여 주는 다이어그램입니다.

그림 2-4. Docker 용어 및 개념 분류

레지스트리는 이미지를 저장하고 서비스 또는 웹앱을 실행하는 컨테이너를 빌드하기 위해 끌어올 수 있는 책장과 같습니다. 온-프레미스 및 퍼블릭 클라우드에 프라이빗 Docker 레지스트리가 있습니다. Docker 허브는 Docker에서 유지 관리하는 공용 레지스트리로, Docker Trusted Registry를 따라 엔터프라이즈급 솔루션을 제공하며 Azure는 Azure Container Registry를 제공합니다. AWS, Google 등에도 컨테이너 레지스트리가 있습니다.

레지스트리에 이미지를 배치하면 프레임워크 수준에서 모든 종속성을 포함하여 정적이고 변경할 수 없는 애플리케이션 비트를 저장할 수 있습니다. 그런 다음 이러한 이미지를 여러 환경에서 버전 관리 및 배포할 수 있으므로 일관된 배포 단위를 제공합니다.

온-프레미스 또는 클라우드에서 호스트되는 프라이빗 이미지 레지스트리는 다음과 같은 경우에 권장됩니다.

  • 기밀성으로 인해 이미지를 공개적으로 공유해서는 안 됩니다.

  • 이미지와 선택한 배포 환경 간에 네트워크 대기 시간을 최소화하려고 합니다. 예를 들어 프로덕션 환경이 Azure 클라우드인 경우 네트워크 대기 시간이 최소화되도록 이미지를 Azure Container Registry 에 저장하려고 할 수 있습니다. 마찬가지로 프로덕션 환경이 온-프레미스인 경우 동일한 로컬 네트워크 내에서 온-프레미스 Docker 신뢰할 수 있는 레지스트리를 사용할 수 있도록 할 수 있습니다.