首頁 > 後端開發 > Golang > 如何解決 Docker Scratch 映像中的「沒有這樣的檔案或目錄」錯誤?

如何解決 Docker Scratch 映像中的「沒有這樣的檔案或目錄」錯誤?

Barbara Streisand
發布: 2024-12-17 16:15:10
原創
500 人瀏覽過

How to Solve

解決Docker Scratch 映像的「沒有這樣的檔案或目錄」錯誤

可能會出現令人沮喪的「沒有這樣的文件或目錄」錯誤訊息在使用Docker 臨時映像時。此錯誤通常表示二進位名稱與其實際名稱不匹配,或缺少指向基本庫的動態連結。

在 Docker 臨時映像中,二進位檔案通常是從基礎映像複製的。如提供的 Dockerfile 所示,臨時映像是透過從基礎映像複製 /etc/passwd 等基本檔案和二​​進位 $PROJ_BIN_PATH 來建構的。但是,要解決此錯誤,必須使用 CGO_ENABLED=0 指令停用 CGO (C Go)。

啟用 CGO 後,可以創建到 libc 或 libmusl 等庫的動態鏈接,從而在以下情況下導致錯誤臨時映像中的庫不可用。透過停用 CGO,將建立靜態編譯的二進位文件,從而無需外部庫引用。

要使用此解決方案修復錯誤,請將現有的 RUN GOOS=linux GOARCH=amd64 go build命令替換為以下內容Dockerfile:

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

這將確保您的二進位檔案是靜態編譯的並且不會依賴外部庫,從而解決「沒有這樣的庫」的問題檔案或目錄」錯誤。 -t your_go_image 。 然後 docker run -it --rm your_go_image ldd /$PROJ_NAME,您可以檢查二進位檔案的動態相依性並識別任何潛在的缺失庫。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板