Maison >développement back-end >Golang >Comment corriger l'erreur « aucun fichier ou répertoire de ce type » lors de l'utilisation d'images Scratch Docker ?

Comment corriger l'erreur « aucun fichier ou répertoire de ce type » lors de l'utilisation d'images Scratch Docker ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-03 08:56:40588parcourir

How to Fix the

Dépannage de l'erreur "aucun fichier ou répertoire de ce type" avec l'image de travail Docker

Lors de la création d'une image Docker avec une image de base de travail, il est possible rencontrez l'erreur "standard_init_linux.go:207 : le processus utilisateur d'exécution a provoqué "aucun fichier ou répertoire de ce type"". Ce problème peut survenir lorsque certaines dépendances ou bibliothèques ne sont pas disponibles dans l'image de travail.

Causes possibles

L'erreur indique généralement que l'exécutable binaire est manquant ou mal nommé. . Alternativement, cela pourrait signifier que le binaire est lié dynamiquement à une bibliothèque qui n'est pas présente dans l'image scratch.

Solution : Désactivez CGO

Pour résoudre ce problème, envisagez de désactiver CGO (C Go) pendant le processus de construction Go. CGO est une fonctionnalité qui permet aux programmes Go d'interagir avec le code C natif, mais elle peut entraîner des liens dynamiques vers la bibliothèque standard C (libc).

En désactivant CGO, vous vous assurez que le binaire est lié statiquement sans toute dépendance externe. Utilisez la commande suivante pour désactiver CGO :

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

Vérification des liens dynamiques

Après avoir créé l'image, vous pouvez utiliser la commande ldd pour vérifier les liens dynamiques dans le binaire :

docker build --target=0 -t your_go_image .
docker run -it --rm your_go_image ldd /$PROJ_NAME

Si la sortie de ldd indique des liens dynamiques, vous devrez peut-être enquêter sur ces dépendances et vous assurer qu'elles sont incluses dans le Image Docker.

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