排查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/...
其他注意事項
此外,請檢查以下幾點:
docker build --target=0 -t your_go_image . docker run -it --rm your_go_image ldd /$PROJ_NAME
以上是為什麼我的 Docker Scratch 映像回傳「沒有這樣的檔案或目錄」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!