首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在多阶段码头构建中的基本图像从不显眼切换到高寒引起的"exec用户进程:没有这样的文件或目录“?

为什么在多阶段码头构建中的基本图像从不显眼切换到高寒引起的"exec用户进程:没有这样的文件或目录“?
EN

Stack Overflow用户
提问于 2022-02-25 07:06:43
回答 1查看 540关注 0票数 -1

我正在按照https://docs.docker.com/language/golang/build-images/的指南学习如何最好地为Go应用程序进行多级Docker构建。我克隆了回购:

代码语言:javascript
复制
git clone https://github.com/olliefr/docker-gs-ping

我在指南底部附近运行命令来构建图像:

代码语言:javascript
复制
docker build -t docker-gs-ping:multistage -f Dockerfile.multistage .

我还运行了自己的命令,从图像中运行一个临时容器:

代码语言:javascript
复制
docker run --rm docker-gs-ping:multistage

这个效果很好。我在我的终端中看到应用程序的输出。但是,我想将指南中的无分辨图像(gcr.io/distroless/base-debian10)中的第二层映像切换到alpine:3。当我做了这个更改,构建了一个新映像,并试图使用上面的相同命令运行新映像时,我得到了一个关于用户不存在的错误:

代码语言:javascript
复制
docker: Error response from daemon: unable to find user nonroot: no matching entries in passwd file.

这对我来说很有意义。听起来,无分辨图像有这个用户,而阿尔卑斯图像却没有,所以我从Dockerfile中删除了USER nonroot:nonroot。因此,在这里,我的Dockerfile的下半部分如下所示:

代码语言:javascript
复制
##
## Deploy
##

FROM alpine:3

WORKDIR /

COPY --from=build /docker-gs-ping /docker-gs-ping

EXPOSE 8080

ENTRYPOINT ["/docker-gs-ping"]

然后,我构建了一个新映像,并尝试使用上面的相同命令运行新映像。这一次,我得到了以下错误:

代码语言:javascript
复制
standard_init_linux.go:228: exec user process caused: no such file or directory

我很难排除这个错误。为什么这样切换我的基本图像会导致这个错误?

EN

回答 1

Stack Overflow用户

发布于 2022-02-25 07:19:23

我的基本图像不同步。用于构建二进制文件的阶段所使用的基本图像也需要高寒。如果我将指南中该Dockerfile的第一行从FROM golang:1.16 AS build切换到FROM golang:1.16-alpine AS build,它就能工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71262223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档