【问题标题】:docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container processdocker:来自守护进程的错误响应:创建垫片任务失败:OCI 运行时创建失败:runc 创建失败:无法启动容器进程
【发布时间】:2023-01-27 00:59:13
【问题描述】:

我正在尝试构建此 dockerfile 然后运行它,但出现此错误 docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./deployment-service": permission denied: unknown.

这是我的 docker 文件,我已经创建了卷和网络

FROM golang:1.19.2-alpine as builder

RUN apk add bash

RUN apk add --no-cache openssh-client ansible git

RUN mkdir /workspace
WORKDIR /workspace

COPY go.mod ./
COPY go.sum ./

RUN go mod download

COPY . ./

RUN go build -o deployment-service cmd/deployment-service/main.go

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/

COPY --from=builder /workspace .

ARG DEFAULT_PORT=8080
ENV PORT $DEFAULT_PORT

EXPOSE $PORT

CMD ["./deployment-service"]

这是我的运行命令,

docker run --name=${CONTAINER_NAME} -d --rm -p ${PORT}:80 -e DEPLOYMENT_SERVICE_DATABASE_CONNECTION_URI=mongodb://${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_CONTAINER_NAME}:27017/ -e DEPLOYMENT_SERVICE_SERVER_SECRET_KEY=${SECRET_KEY} -e ANSIBLE_CONFIG='./jam-ansible/ansible.cfg' -e DEPLOYMENT_SERVICE_ANSIBLE_SUBMISSION_ROOT=${DEPLOYMENT_ROOT} -v ${DEPLOYMENT_VOLUME}:${DEPLOYMENT_ROOT} --network=${NETWORK_NAME} server:latest

帮助解决我的问题。

【问题讨论】:

  • 在没有 Docker 的情况下,相同的 go build ...; ./deployment-service 序列是否有效? go build ... ./cmd/deployment-service,指定包名而不仅仅是单个文件名是否更好?
  • 是的,它的工作。在我开始面临这个问题之后,我错误地从容器中删除了二进制文件一次。
  • ...在 docker run 命令中,您有一个 -v 选项隐藏容器中的 $DEPLOYMENT_ROOT 目录。如果是图片的/root目录,肯定会出现这个问题;删除该选项以使用图像中内置的二进制文件。 (docker building 一个更新的图像不应该比 go building 一个二进制文件贵很多;你不需要卷挂载来注入代码。)
  • 不,那不是图像的根目录,它是我想保留的容器中的一些数据。此外,当我将二进制名称更改为其他名称时,我解决了错误消息。正如我之前所说,问题是在我删除容器内的二进制文件后开始的,但据我所知,如果一个容器被删除,与其相关的所有内容都会被删除,所以如果我在删除容器(我从中删除了二进制文件)后创建一个新容器) 它应该再次生成二进制文件并且应该可以正常工作,但它没有发生。

标签: docker go


【解决方案1】:

看起来您需要编辑部署服务文件的权限。

尝试跑步

chmod a+x ./deployment-service

在终端然后再试一次。

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 2019-04-30
    • 2020-01-11
    • 1970-01-01
    • 2018-05-28
    • 2021-10-08
    • 2021-11-16
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多