Docker Scratch 镜像“没有这样的文件或目录”:已解决
使用 Docker 的 scrap 镜像时,可能会遇到错误“no这样的文件或目录”执行二进制文件时。此错误通常源于二进制文件被动态链接到图像中不存在的库。
要纠正此问题,请禁用 CGO (C Go):
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ -ldflags="-w -s" -o $PROJ_BIN_PATH ./cmd/...
CGO 链接到系统库,这可能会导致临时映像出现问题。通过禁用 CGO,您可以确保二进制文件是静态链接的并且不依赖于外部库。
此外,您可以使用 ldd 验证二进制文件中的动态链接:
docker build --target=0 -t your_go_image . docker run -it --rm your_go_image ldd /$PROJ_NAME
This命令将列出二进制文件链接到的所有库。如果 ldd 返回“不是动态可执行文件”,则二进制文件是静态链接的。
以上是如何解决 Docker Scratch Images 和 Go 的'没有这样的文件或目录”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!