Maison >développement back-end >Golang >Pourquoi mon image Docker Scratch renvoie-t-elle une erreur « aucun fichier ou répertoire de ce type » ?

Pourquoi mon image Docker Scratch renvoie-t-elle une erreur « aucun fichier ou répertoire de ce type » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 19:14:14469parcourir

Why Does My Docker Scratch Image Return a

Dépannage de l'erreur « aucun fichier ou répertoire de ce type » avec l'image à gratter Docker

Les images à gratter Docker fournissent un environnement d'exécution minimal pour l'exécution des conteneurs. Cependant, lorsque vous utilisez un Dockerfile avec une image de travail, vous pouvez rencontrer une erreur indiquant "standard_init_linux.go:207 : le processus utilisateur exec n'a provoqué aucun fichier ou répertoire de ce type".

Cause et solution

Cette erreur peut survenir lorsque vous n'utilisez pas de build CGO. Les builds CGO (CGO signifie « C Go » ; dans le contexte de la programmation Go, cela fait référence à la possibilité d'appeler du code C dans les programmes Go) les builds génèrent des liens dynamiques vers des bibliothèques comme libc ou libmusl. Pour résoudre ce problème, désactivez CGO en ajoutant la ligne suivante à votre Dockerfile :

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
    -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...

Autres considérations

De plus, vérifiez les points suivants :

  • Assurez-vous que votre binaire est nommé correctement.
  • Si votre binaire est lié dynamiquement, vérifiez que les bibliothèques requises existent.
  • Vous pouvez utiliser la commande ldd pour inspecter les liens dynamiques, comme démontré dans l'exemple ci-dessous :
docker build --target=0 -t your_go_image .
docker run -it --rm your_go_image ldd /$PROJ_NAME

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!

Déclaration:
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