Maison > développement back-end > Golang > Pourquoi ma construction Docker échoue-t-elle avec « qemu-x86_64 : impossible d'ouvrir '/lib64/ld-linux-x86-64.so.2' » sur les Mac M1 ?

Pourquoi ma construction Docker échoue-t-elle avec « qemu-x86_64 : impossible d'ouvrir '/lib64/ld-linux-x86-64.so.2' » sur les Mac M1 ?

DDD
Libérer: 2024-12-17 11:15:26
original
178 Les gens l'ont consulté

Why Does My Docker Build Fail with

"qemu-x86_64 : Impossible d'ouvrir '/lib64/ld-linux-x86-64.so.2' : aucun fichier ou répertoire de ce type" Erreur dans Docker Créer sur des Mac M1

Lors de la création d'images Docker sur des Mac M1 en utilisant Docker Desktop, les utilisateurs peuvent rencontrer le message d'erreur « qemu-x86_64 : Impossible d'ouvrir '/lib64/ld-linux-x86-64.so.2' : Aucun fichier ou répertoire de ce type. » Ce problème survient car Docker tente d'utiliser une image ARM64 comme image de base, mais nécessite ultérieurement des binaires compilés pour l'architecture x86_64.

La cause première de ce problème est que l'architecture du Mac M1 diffère des architectures x86_64 traditionnelles. Bien qu'il prenne en charge l'émulation via qemu-x86_64, l'absence du fichier requis "/lib64/ld-linux-x86-64.so.2" dans l'image de base ARM64 conduit à l'erreur signalée.

< h3>Solution :

De manière contre-intuitive, la solution consiste à spécifiez explicitement --platform=linux/amd64 sur la ligne "FROM" dans le Dockerfile :

FROM --platform=linux/amd64 ubuntu:focal
Copier après la connexion

Cela demande à Docker d'utiliser une image de base x86_64, en garantissant que les fichiers nécessaires sont présents pendant le processus de construction. En commençant à partir d'une image x86_64, le processus de construction peut se poursuivre sans nécessiter d'émulation, résolvant ainsi l'erreur de fichier introuvable.

Alternativement, les utilisateurs peuvent envisager de créer leurs propres images de base basées sur ARM64 et de compiler manuellement le logiciel requis dans le conteneur pendant le temps de construction. Cependant, cette option peut être plus adaptée à des scénarios spécifiques dans lesquels les binaires ARM64 prédéfinis ne sont pas disponibles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal