启动容器过程引起的“ exec:// app\:权限被拒绝”:未知 [英] starting container process caused "exec: \"/app\": permission denied": unknown

查看:821
本文介绍了启动容器过程引起的“ 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\:权限被拒绝”:未知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆