首頁 >後端開發 >Golang >為什麼我的 Docker Scratch 映像回傳「沒有這樣的檔案或目錄」錯誤?

為什麼我的 Docker Scratch 映像回傳「沒有這樣的檔案或目錄」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-12-29 19:14:14462瀏覽

Why Does My Docker Scratch Image Return a

排查Docker 臨時鏡像的「沒有這樣的檔案或目錄」錯誤

Docker 臨時映像為運行容器提供了最小的運行時環境。但是,當使用帶有暫存映像的Dockerfile 時,您可能會遇到錯誤「standard_init_linux.go:207: exec user process Causes 'no such file or directory'。」

原因和解

當您不使用CGO建置時,可能會出現此錯誤。 CGO(CGO 代表「C Go」;在 Go 程式設計的上下文中,它指的是 Go 程式中呼叫 C 程式碼的能力)建構導致動態連結到 libc 或 libmusl 等函式庫。要解決此問題,請透過將以下行新增至Dockerfile 來停用CGO:

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

其他注意事項

此外,請檢查以下幾點:

  • 確保您的二進位檔案命名正確。
  • 如果您的二進位檔案已連結動態地,請驗證所需的庫是否存在。
  • 您可以使用 ldd 命令檢查動態鏈接,如下例所示:
docker build --target=0 -t your_go_image .
docker run -it --rm your_go_image ldd /$PROJ_NAME

以上是為什麼我的 Docker Scratch 映像回傳「沒有這樣的檔案或目錄」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn