Dataflow를 위한 멀티 아키텍처 컨테이너 이미지 빌드

Dataflow에서 커스텀 컨테이너를 사용하는 경우 컨테이너는 작업자 VM의 아키텍처와 일치해야 합니다. 이 문서에서는 x86 및 Arm VM과 호환되는 멀티아키텍처 컨테이너를 만드는 방법을 설명합니다.

Docker CLI 또는 Cloud Build를 사용하여 컨테이너 이미지를 빌드할 수 있습니다.

Docker를 사용하여 이미지 빌드

  1. Dockerfile을 만듭니다. FROM 안내를 사용하여 멀티아키텍처 기본 이미지를 지정합니다.

    FROM apache/beam_python3.10_sdk:2.50.0
    
    # Make your customizations here, for example:
    ENV FOO=/bar
    COPY path/to/myfile ./
    
  2. Buildx 도구를 설치합니다. 도구가 설치되었는지 확인하려면 다음 명령어를 실행합니다.

    docker buildx version
    
  3. 다음 명령어를 실행하여 docker-container 드라이버를 사용하는 빌더 인스턴스를 만듭니다. 이 드라이버는 멀티아키텍처 이미지를 빌드하는 데 필요합니다.

    docker buildx create --driver=docker-container --use
    

    --use 플래그는 새 빌더 인스턴스를 현재 빌더로 설정합니다.

  4. 다음 명령어를 실행하여 Docker에서 Artifact Registry에 대한 요청을 인증하도록 구성합니다.

    gcloud auth configure-docker REGION-docker.pkg.dev
    

    REGION을 Artifact Registry 저장소의 리전으로 바꿉니다.

  5. 다음 명령어를 실행하여 컨테이너 이미지를 빌드하고 Artifact Registry에 푸시합니다.

    docker buildx build \
      --platform=linux/amd64,linux/arm64 \
      -t REGISTRY/IMAGE:TAG  \
      --push .
    

    다음을 바꿉니다.

    • REGISTRY: Docker 저장소
    • IMAGE: 이미지 이름
    • TAG: 이미지 태그

Cloud Build를 사용하여 이미지 빌드

  1. Dockerfile을 만듭니다. FROM 안내를 사용하여 멀티아키텍처 기본 이미지를 지정합니다.

    FROM apache/beam_python3.10_sdk:2.50.0
    
    # Make your customizations here, for example:
    ENV FOO=/bar
    COPY path/to/myfile ./
    
  2. Dockerfile이 포함된 동일한 디렉터리에서 docker_buildx.yaml이라는 파일을 만듭니다. 다음 텍스트를 붙여넣습니다.

    steps:
    - name: 'docker'
      args: ['buildx', 'create', '--driver', 'docker-container', '--name', 'container', '--use']
    - name: 'docker'
      args: ['buildx', 'build', '--platform', 'linux/amd64,linux/arm64', '-t', 'REGISTRY/IMAGE:TAG', '--push', '.']
    

    다음을 바꿉니다.

    • REGISTRY: Docker 저장소
    • IMAGE: 이미지 이름
    • TAG: 이미지 태그
  3. 이미지를 빌드하고 푸시하려면 gcloud builds submit 명령어를 실행합니다.

    gcloud builds submit --region=REGION --config docker_buildx.yaml
    

    REGION을 사용할 Cloud Build 서비스의 리전으로 바꿉니다.

자세한 내용은 Cloud Build로 Docker 이미지 빌드 및 푸시를 참조하세요.

컨테이너 이미지 확인

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 컨테이너 이미지가 있는 저장소를 클릭합니다.

  3. 이미지를 클릭하여 버전을 확인합니다.

  4. 버전을 클릭합니다.

  5. 매니페스트를 클릭합니다.

  6. 매니페스트 파일의 platform 섹션에는 arm64amd64의 항목이 있어야 합니다. 예를 들면 다음과 같습니다.

      {
        "schemaVersion": 2,
        "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
        "manifests": [
            {
              "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
              "digest": "sha256:441d5438885049e2b388523a8cb5b77ea829c3c3f53326fb221fe185abd67f07",
              "size": 3074,
              "platform": {
                  "architecture": "amd64",
                  "os": "linux"
              }
            },
            {
              "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
              "digest": "sha256:d3b98b0f8f3f555f5453c79b240bd2b862d4f52d853fe81bae55f01a663de29c",
              "size": 3073,
              "platform": {
                  "architecture": "arm64",
                  "os": "linux"
              }
            }
        ]
      }
    

다음 단계