팁 (조언)
이 콘텐츠는 .NET Docs 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 컨테이너화된 .NET 애플리케이션용 .NET 마이크로 서비스 아키텍처인 eBook에서 발췌한 내용입니다.
이 섹션에서는 Docker에 대해 자세히 알아보기 전에 잘 알고 있어야 하는 용어와 정의를 나열합니다. 자세한 정의는 Docker에서 제공하는 광범위한 용어집 을 참조하세요.
컨테이너 이미지: 컨테이너를 만드는 데 필요한 모든 종속성 및 정보가 포함된 패키지입니다. 이미지에는 모든 종속성(예: 프레임워크)과 컨테이너 런타임에서 사용할 배포 및 실행 구성이 포함됩니다. 일반적으로 이미지는 컨테이너의 파일 시스템을 형성하기 위해 서로 위에 쌓인 여러 기본 이미지에서 파생됩니다. 이미지가 만들어지면 변경할 수 없습니다.
Dockerfile: Docker 이미지를 빌드하기 위한 지침이 포함된 텍스트 파일입니다. 일괄 처리 스크립트와 마찬가지로 첫 번째 줄은 기본 이미지를 시작하고 지침에 따라 필요한 작업 환경을 얻을 때까지 필요한 프로그램을 설치하고 파일을 복사하는 등의 작업을 수행하도록 명시합니다.
빌드: Dockerfile에서 제공하는 정보 및 컨텍스트에 따라 컨테이너 이미지를 빌드하는 작업과 이미지가 빌드된 폴더의 추가 파일입니다. 다음 Docker 명령을 사용하여 이미지를 빌드할 수 있습니다.
docker build
컨테이너: Docker 이미지의 인스턴스입니다. 컨테이너는 단일 애플리케이션, 프로세스 또는 서비스의 실행을 나타냅니다. Docker 이미지의 내용, 실행 환경 및 표준 지침 집합으로 구성됩니다. 서비스 크기를 조정하는 경우 동일한 이미지에서 컨테이너의 여러 인스턴스를 만듭니다. 또는 일괄 처리 작업은 동일한 이미지에서 여러 컨테이너를 만들어 각 인스턴스에 서로 다른 매개 변수를 전달할 수 있습니다.
볼륨: 컨테이너에서 사용할 수 있는 쓰기 가능한 파일 시스템을 제공합니다. 이미지는 읽기 전용이지만 대부분의 프로그램은 파일 시스템에 기록해야 하므로 볼륨은 컨테이너 이미지 위에 쓰기 가능한 계층을 추가하므로 프로그램은 쓰기 가능한 파일 시스템에 액세스할 수 있습니다. 프로그램은 계층화된 파일 시스템에 액세스하고 있다는 것을 알지 못하며, 평소와 같이 파일 시스템일 뿐입니다. 볼륨은 호스트 시스템에 있으며 Docker에서 관리됩니다.
태그: 동일한 이미지의 다른 이미지 또는 버전(버전 번호 또는 대상 환경에 따라 다름)을 식별할 수 있도록 이미지에 적용할 수 있는 표시 또는 레이블입니다.
다단계 빌드: Docker 17.05 이상부터 최종 이미지의 크기를 줄이는 데 도움이 되는 기능입니다. 예를 들어 SDK를 포함하는 큰 기본 이미지를 컴파일 및 게시하는 데 사용할 수 있으며 작은 런타임 전용 기본 이미지를 사용하여 애플리케이션을 호스트할 수 있습니다.
리포지토리(리포지토리): 이미지 버전을 나타내는 태그로 레이블이 지정된 관련 Docker 이미지의 컬렉션입니다. 일부 리포지토리에는 SDK(더 무거워짐), 런타임만 포함하는 이미지(더 밝은) 등과 같은 특정 이미지의 여러 변형이 포함됩니다. 이러한 변형은 태그로 표시할 수 있습니다. 단일 리포지토리는 Linux 이미지 및 Windows 이미지 같은 플랫폼 변형을 포함할 수 있습니다.
레지스트리: 리포지토리에 대한 액세스를 제공하는 서비스입니다. 대부분의 공용 이미지에 대한 기본 레지스트리는 Docker 허브 (Docker가 조직으로 소유)입니다. 레지스트리는 일반적으로 여러 팀의 리포지토리를 포함합니다. 회사에는 만든 이미지를 저장하고 관리하는 개인 레지스트리가 있는 경우가 많습니다. Azure Container Registry는 또 다른 예입니다.
다중 아키텍처 이미지: 다중 아키텍처(또는 다중 플랫폼)의 경우 Docker가 실행되는 플랫폼에 따라 적절한 이미지의 선택을 간소화하는 Docker 기능입니다. 예를 들어 Dockerfile이 레지스트리 에서 기본 이미지 FROM mcr.microsoft.com/dotnet/sdk:8.0 요청하는 경우 Docker가 실행되는 운영 체제 및 버전에 따라 실제로 8.0-nanoserver-ltsc2022, 8.0 nanoserver-1809 또는 8.0-bullseye-slim을 가져옵니다.
Docker 허브: 이미지를 업로드하고 작업하는 공용 레지스트리입니다. Docker Hub는 Docker 이미지 호스팅, 퍼블릭 또는 프라이빗 레지스트리, 빌드 트리거 및 웹 후크, GitHub 및 Bitbucket과의 통합을 제공합니다.
Azure Container Registry: Azure에서 Docker 이미지 및 해당 구성 요소를 사용하기 위한 공용 리소스입니다. 이렇게 하면 Azure의 배포와 가까운 레지스트리를 제공하고 액세스를 제어할 수 있으므로 Azure Active Directory 그룹 및 권한을 사용할 수 있습니다.
DTR(Docker 신뢰할 수 있는 레지스트리): 조직의 데이터 센터 및 네트워크 내에 있도록 온-프레미스에 설치할 수 있는 Docker 레지스트리 서비스(Docker)입니다. 엔터프라이즈 내에서 관리해야 하는 프라이빗 이미지에 편리합니다. Docker 신뢰할 수 있는 레지스트리는 Docker 데이터 센터 제품의 일부로 포함됩니다.
Docker Desktop: 컨테이너를 로컬로 빌드, 실행 및 테스트하기 위한 Windows 및 macOS용 개발 도구입니다. Windows용 Docker Desktop은 Linux 및 Windows 컨테이너 모두에 대한 개발 환경을 제공합니다. Windows의 Linux Docker 호스트는 Hyper-V 가상 머신을 기반으로 합니다. Windows 컨테이너의 호스트는 Windows를 직접 기반으로 합니다. Mac용 Docker Desktop은 MacOS에서 Linux Docker 호스트 가상 머신을 제공하는 Apple 하이퍼 바이저 프레임워크 및 xhyve 하이퍼바이저를 기반으로 합니다. Windows 및 Mac용 Docker Desktop은 Oracle VirtualBox를 기반으로 하는 Docker 도구 상자를 대체합니다.
작성: 다중 컨테이너 애플리케이션을 정의하고 실행하기 위한 메타데이터가 있는 명령줄 도구 및 YAML 파일 형식입니다. 환경에 따라 값을 재정의할 수 있는 하나 이상의 .yml 파일이 있는 여러 이미지를 기반으로 단일 애플리케이션을 정의합니다. 정의를 만든 후에는 Docker 호스트에서 이미지당 컨테이너를 만드는 단일 명령(docker-compose up)을 사용하여 전체 다중 컨테이너 애플리케이션을 배포할 수 있습니다.
클러스터: 애플리케이션이 클러스터 내의 여러 호스트에 분산된 서비스의 여러 인스턴스로 확장할 수 있도록 단일 가상 Docker 호스트인 것처럼 노출된 Docker 호스트의 컬렉션입니다. Kubernetes, Azure Service Fabric, Docker Swarm 및 Mesosphere DC/OS를 사용하여 Docker 클러스터를 만들 수 있습니다.
오케스트레이터: 클러스터 및 Docker 호스트의 관리를 간소화하는 도구입니다. 오케스트레이터를 사용하면 CLI(명령줄 인터페이스) 또는 그래픽 UI를 통해 이미지, 컨테이너 및 호스트를 관리할 수 있습니다. 컨테이너 네트워킹, 구성, 부하 분산, 서비스 검색, 고가용성, Docker 호스트 구성 등을 관리할 수 있습니다. 오케스트레이터는 노드 컬렉션에서 워크로드를 실행, 배포, 크기 조정 및 복구하는 작업을 담당합니다. 일반적으로 오케스트레이터 제품은 Kubernetes 및 Azure Service Fabric과 같은 클러스터 인프라를 제공하는 동일한 제품입니다.
.NET