Heim >Backend-Entwicklung >Golang >Wie behebe ich den Fehler „Keine solche Datei oder kein solches Verzeichnis' bei der Verwendung von Docker Scratch Images?

Wie behebe ich den Fehler „Keine solche Datei oder kein solches Verzeichnis' bei der Verwendung von Docker Scratch Images?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 08:56:40618Durchsuche

How to Fix the

Fehlerbehebung „Keine solche Datei oder kein solches Verzeichnis“ mit Docker-Scratch-Image

Beim Erstellen eines Docker-Images mit einem Scratch-Basis-Image kann dies passieren Es kommt der Fehler „standard_init_linux.go:207: exec-Benutzerprozess verursacht „keine solche Datei oder kein solches Verzeichnis““. Dieses Problem kann auftreten, wenn bestimmte Abhängigkeiten oder Bibliotheken im Scratch-Image nicht verfügbar sind.

Mögliche Ursachen

Der Fehler weist normalerweise darauf hin, dass die ausführbare Binärdatei fehlt oder falsch benannt ist . Alternativ könnte es bedeuten, dass die Binärdatei dynamisch mit einer Bibliothek verknüpft ist, die nicht im Scratch-Image vorhanden ist.

Lösung: Deaktivieren Sie CGO

Um dieses Problem zu beheben, Erwägen Sie, CGO (C Go) während des Go-Build-Prozesses zu deaktivieren. CGO ist eine Funktion, die es Go-Programmen ermöglicht, mit nativem C-Code zu interagieren, aber es kann zu dynamischen Links zur C-Standardbibliothek (libc) führen.

Durch die Deaktivierung von CGO stellen Sie sicher, dass die Binärdatei ohne statische Verknüpfung ist eventuelle externe Abhängigkeiten. Verwenden Sie den folgenden Befehl, um CGO zu deaktivieren:

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

Auf dynamische Links prüfen

Nachdem Sie das Image erstellt haben, können Sie mit dem Befehl ldd nach dynamischen Links suchen die Binärdatei:

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

Wenn die Ausgabe von ldd dynamische Links anzeigt, müssen Sie diese Abhängigkeiten möglicherweise untersuchen und sicherstellen, dass sie in der Binärdatei enthalten sind Docker-Image.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Keine solche Datei oder kein solches Verzeichnis' bei der Verwendung von Docker Scratch Images?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn