Se usar um contentor personalizado no Dataflow, o contentor tem de corresponder à arquitetura das VMs de trabalho. Este documento descreve como criar contentores de várias arquiteturas compatíveis com VMs x86 e Arm.
Pode usar a CLI do Docker ou o Cloud Build para criar a imagem do contentor.
Use o Docker para criar a imagem
Crie um Dockerfile. Use a instrução
FROM
para especificar uma imagem base de várias arquiteturas.FROM apache/beam_python3.10_sdk:2.50.0 # Make your customizations here, for example: ENV FOO=/bar COPY path/to/myfile ./
Instale a ferramenta Buildx. Para verificar se a ferramenta está instalada, execute o seguinte comando:
docker buildx version
Execute o seguinte comando para criar uma instância do criador que use o controlador
docker-container
. Este controlador é necessário para criar imagens de várias arquiteturas.docker buildx create --driver=docker-container --use
A flag
--use
define a nova instância do criador como o criador atual.Execute o seguinte comando para configurar o Docker de modo a autenticar pedidos ao Artifact Registry.
gcloud auth configure-docker REGION-docker.pkg.dev
Substitua REGION pela região do repositório do Artifact Registry.
Execute o seguinte comando para criar e enviar a imagem de contentor para o Artifact Registry:
docker buildx build \ --platform=linux/amd64,linux/arm64 \ -t REGISTRY/IMAGE:TAG \ --push .
Substitua o seguinte:
- REGISTRY: o repositório do Docker
- IMAGE: o nome da imagem
- TAG: a etiqueta de imagem
Use o Cloud Build para criar a imagem
Crie um Dockerfile. Use a instrução
FROM
para especificar uma imagem base de várias arquiteturas.FROM apache/beam_python3.10_sdk:2.50.0 # Make your customizations here, for example: ENV FOO=/bar COPY path/to/myfile ./
No mesmo diretório que contém o Dockerfile, crie um ficheiro denominado
docker_buildx.yaml
. Cole o seguinte texto: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', '.']
Substitua o seguinte:
- REGISTRY: o repositório do Docker
- IMAGE: o nome da imagem
- TAG: a etiqueta de imagem
Para criar e enviar a imagem, execute o comando
gcloud builds submit
:gcloud builds submit --region=REGION --config docker_buildx.yaml
Substitua REGION pela região do serviço do Cloud Build a usar.
Para mais informações, consulte o artigo Crie e envie uma imagem Docker com o Cloud Build.
Valide a imagem do contentor
Abra a página Repositórios na Google Cloud consola.
Clique no repositório com a imagem do contentor.
Clique na imagem para ver as respetivas versões.
Clique numa versão.
Clique em Manifesto.
No ficheiro do manifesto, a secção
platform
deve ter entradas paraarm64
eamd64
. Por exemplo:{ "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" } } ] }