排查 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中文网其他相关文章!