이미지 푸시
이 문서의 내용
Azure DevOps Services
Azure Pipelines를 사용하여 Azure Container Registry, Docker Hub 또는 Google Container Registry와 같은 컨테이너 레지스트리에 이미지를 푸시합니다. Azure Container Registry는 오픈 소스 Docker Registry 2.0을 기반으로 하는 관리형 레지스트리 서비스입니다.
컨테이너 레지스트리에 이미지를 빌드하고 푸시하는 방법에 대한 자습서는 Azure Container Registry에 Docker 이미지 빌드 및 푸시를 참조 하세요 .
Azure Pipelines를 사용하여 배포할 컨테이너 이미지를 빌드하는 방법을 알아보려면 앱을 배포할 컨테이너 이미지 빌드를 참조 하세요 .
Docker 작업 정보
Docker@2 작업을 사용하여 Docker 이미지를 빌드하거나 푸시하거나, 로그인 또는 로그아웃하거나, 컨테이너를 시작 또는 중지하거나, Docker 명령을 실행합니다.
이 작업은 Docker 레지스트리 서비스 연결을 사용하여 로그인하고 컨테이너 레지스트리로 푸시합니다. Docker 레지스트리 서비스 연결을 만드는 프로세스는 레지스트리에 따라 다릅니다.
Docker 레지스트리 서비스 연결은 이미지를 푸시하기 전에 컨테이너 레지스트리에 자격 증명을 저장합니다. 추가 스크립트 작업 없이 Docker에서 서비스 연결을 직접 참조할 수도 있습니다.
Docker 서비스 연결 만들기
Azure Container Registry, Docker Hub 및 Google Container Registry에 대한 서비스 연결을 만들려면 다른 프로세스를 따라야 합니다.
Azure Container Registry 옵션을 사용하면 구독(Azure DevOps에 로그인한 사용자의 Microsoft Entra ID와 연결됨) 및 구독 내의 컨테이너 레지스트리가 서비스 연결을 만드는 데 사용됩니다.
Dockerfile을 포함하는 리포지토리에 대한 새 파이프라인을 만들면 Azure Pipelines는 리포지토리에서 Dockerfile을 검색합니다. 이 프로세스를 시작하려면 새 파이프라인을 만들고 Dockerfile을 사용하여 리포지토리를 선택합니다.
구성 탭에서 Docker - 이미지를 빌드하고 Azure Container Registry 작업에 푸시합니다.
Azure 구독을 선택한 다음 계속을 선택합니다 .
드롭다운 메뉴에서 컨테이너 레지스트리 를 선택한 다음 컨테이너 이미지에 이미지 이름을 제공합니다.
유효성 검사를 선택하고 완료되면 구성 합니다.
Azure Pipelines는 파이프라인을 만들 때 다음을 수행합니다.
자세한 개요는 Azure Container Registry 문서 빌드 및 푸시를 참조 하세요 .
Docker 레지스트리 서비스 연결에서 Docker 허브 옵션을 선택하고 사용자 이름과 암호를 제공하여 Docker 서비스 연결을 만듭니다.
Google Container Registry와 연결된 Docker 서비스 연결을 만들려면 다음을 수행합니다.
GCP 콘솔에서 프로젝트를 연 다음 Cloud Shell을 엽니다.
프로젝트 ID 및 컴퓨팅 엔진 영역 옵션을 입력하는 시간을 절약하려면 다음 명령을 실행하여 기본 구성 값을 설정합니다.
gcloud config set project [PROJECT_NAME]
gcloud config set compute/zone [ZONE]
GCP 프로젝트의 이름으로 바꾸고 리소스를 만드는 데 사용할 영역의 이름으로 바 [ZONE]
꿉 [PROJECT_NAME]
니다. 선택할 영역이 확실하지 않은 경우 다음을 사용합니다 us-central1-a
. 예시:
gcloud config set project azure-pipelines-test-project-12345
gcloud config set compute/zone us-central1-a
프로젝트에 대해 Container Registry API를 사용하도록 설정합니다.
gcloud services enable containerregistry.googleapis.com
Azure Pipelines에 대한 서비스 계정을 만들어 Docker 이미지를 게시합니다.
gcloud iam service-accounts create azure-pipelines-publisher --display-name "Azure Pipelines Publisher"
서비스 계정에 스토리지 관리 IAM 역할을 할당합니다.
PROJECT_NUMBER=$(gcloud projects describe \
$(gcloud config get-value core/project) \
--format='value(projectNumber)')
AZURE_PIPELINES_PUBLISHER=$(gcloud iam service-accounts list \
--filter="displayName:Azure Pipelines Publisher" \
--format='value(email)')
gcloud projects add-iam-policy-binding \
$(gcloud config get-value core/project) \
--member serviceAccount:$AZURE_PIPELINES_PUBLISHER \
--role roles/storage.admin
서비스 계정 키를 생성합니다.
gcloud iam service-accounts keys create \
azure-pipelines-publisher.json --iam-account $AZURE_PIPELINES_PUBLISHER
tr -d '\n' < azure-pipelines-publisher.json > azure-pipelines-publisher-oneline.json
Cloud Shell의 오른쪽 위 모서리에 있는 단추를 클릭하여 코드 편집기를 시작합니다.
named azure-pipelines-publisher-oneline.json
파일을 엽니다. 다음 단계 중 하나에서 이 파일의 콘텐츠가 필요합니다.
Azure DevOps 조직에서 프로젝트 설정을 선택한 다음, 파이프라인 -> 서비스 연결을 선택합니다 .
새 서비스 연결을 선택하고 Docker 레지스트리를 선택합니다.
대화 상자에서 다음 필드에 대한 값을 입력합니다.
Docker 레지스트리: https://gcr.io/[PROJECT-ID]
GCP 프로젝트의 이름은 다음과 [PROJECT-ID]
같습니다.
Docker ID: _json_key
Docker 암호: 다음 내용을 붙여넣습니다. azure-pipelines-publisher-oneline.json
서비스 연결 이름: gcrServiceConnection
저장을 선택하여 서비스 연결 만들기