Si vous utilisez un conteneur personnalisé dans Dataflow, celui-ci doit correspondre à l'architecture des VM de nœud de calcul. Ce document explique comment créer des conteneurs multi-architectures compatibles avec les VM x86 et basées sur l'architecture ARM.
Vous pouvez créer l'image de conteneur à l'aide de la CLI Docker ou de Cloud Build.
Utiliser Docker pour créer l'image
Créez un fichier Dockerfile. Utilisez l'instruction
FROM
pour spécifier une image de base multi-architecture.FROM apache/beam_python3.10_sdk:2.50.0 # Make your customizations here, for example: ENV FOO=/bar COPY path/to/myfile ./
Installez l'outil Buildx. Pour vérifier si l'outil est installé, exécutez la commande suivante :
docker buildx version
Exécutez la commande suivante pour créer une instance de compilateur qui utilise le pilote
docker-container
. Ce pilote est requis pour créer des images multi-architectures.docker buildx create --driver=docker-container --use
L'option
--use
définit la nouvelle instance de compilateur en tant que compilateur actuel.Exécutez la commande suivante pour configurer Docker afin d'authentifier les requêtes envoyées à Artifact Registry.
gcloud auth configure-docker REGION-docker.pkg.dev
Remplacez REGION par la région du dépôt Artifact Registry.
Exécutez la commande suivante pour créer et transférer l'image de conteneur dans Artifact Registry :
docker buildx build \ --platform=linux/amd64,linux/arm64 \ -t REGISTRY/IMAGE:TAG \ --push .
Remplacez les éléments suivants :
- REGISTRY : dépôt Docker
- IMAGE : nom de l'image
- TAG : tag de l'image
Utiliser Cloud Build pour créer l'image
Créez un fichier Dockerfile. Utilisez l'instruction
FROM
pour spécifier une image de base multi-architecture.FROM apache/beam_python3.10_sdk:2.50.0 # Make your customizations here, for example: ENV FOO=/bar COPY path/to/myfile ./
Dans le répertoire contenant le Dockerfile, créez un fichier nommé
docker_buildx.yaml
. Collez le texte suivant :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', '.']
Remplacez les éléments suivants :
- REGISTRY : dépôt Docker
- IMAGE : nom de l'image
- TAG : tag de l'image
Pour créer et transférer l'image, exécutez la commande
gcloud builds submit
:gcloud builds submit --region=REGION --config docker_buildx.yaml
Remplacez REGION par la région du service Cloud Build à utiliser.
Pour en savoir plus, consultez Créer et transférer une image Docker avec Cloud Build.
Vérifier l'image de conteneur
Ouvrez la page Dépôts de la console Google Cloud.
Cliquez sur le dépôt contenant l'image de conteneur.
Cliquez sur l'image pour afficher ses versions.
Cliquez sur une version.
Cliquez sur Fichier manifeste.
Dans le fichier manifeste, la section
platform
doit contenir des entrées pourarm64
etamd64
. Exemple :{ "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" } } ] }
Étapes suivantes
- Utiliser des VM basées sur l'architecture ARM sur Dataflow
- Exécuter un job Dataflow dans un conteneur personnalisé