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 ?
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
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!