本文介绍了启动容器过程引起的“ exec:// app\:权限被拒绝”:未知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我尝试使用docker构建golang时
When I was trying to build golang using docker
docker的镜像构建成功,但是在使用docker run运行时发生以下错误
The image build of docker was successful, but the following error occurred when running with docker run
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"/app\": permission denied": unknown.
我认为此错误导致没有用户添加,因此我如下添加了组和用户
I think this error cause no user add, so I added group and user as below
RUN groupadd -g 10001 myapp \
&& useradd -u 10001 -g myapp myapp
但未解决。
这是我的源docker文件
Here is my source docker file
FROM golang:1.12.9 as builder
ADD . /go/src/appname/
WORKDIR /go/src/appname/
ENV GO111MODULE=on
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 make build target=prod
FROM alpine
RUN apk update \
&& apk add --no-cache
COPY --from=builder /go/src/ /app
ENTRYPOINT [ "/app" ]
谢谢
推荐答案
在此步骤中,将整个源文件夹复制到目录 / app
中:
You are copying your entire source folder into the directory /app
in this step:
COPY --from=builder /go/src/ /app
然后尝试执行目录:
ENTRYPOINT [ "/app" ]
相反,您需要在复制步骤中复制go build输出的已编译二进制文件。
Instead, you need to copy the compiled binary that your go build outputs in the copy step.
这篇关于启动容器过程引起的“ exec:// app\:权限被拒绝”:未知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!