【问题标题】:Docker entrypoint permission deniedDocker 入口点权限被拒绝
【发布时间】:2019-08-13 16:34:05
【问题描述】:

我目前正在尝试处理对 Kubernetes 集群的部署。部署不断失败并响应

 Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/entrypoint.sh\": permission denied"

我试图更改文件的权限,这似乎成功了,就好像我 ls -l 我得到 -rwxr-xr-x 作为文件的权限一样。

我尝试将 chmod 命令放在 dockerfile 本身以及在构建和上传映像之前,但似乎都没有任何区别。 任何想法为什么我仍然收到错误?

dockerfile 下面

FROM node:10.15.0
CMD []
ENV NODE_PATH /opt/node_modules

# Add kraken files
RUN mkdir -p /opt/kraken
ADD .  /opt/kraken/
# RUN chown -R node /opt/
WORKDIR /opt/kraken

RUN npm install && \
    npm run build && \
    npm prune --production

# Add the entrypoint
COPY ./entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
USER node
ENTRYPOINT ["/entrypoint.sh"]

【问题讨论】:

  • 发布你的 Dockerfile
  • 这里需要完成一些一定顺序的任务。给 dockerfile 中的/entrypoint.sh 文件适当的权限,构建它,推送它,如果 imagePullPolicy 设置为“IfNotPresent”,然后用新的镜像更新,然后部署
  • 你能提供你的 podTemplate 吗?
  • Op,清除要求,这些是用来说明你做得更好的地方。
  • @tacoofdoomk 你在使用 minikube 还是其他集群?

标签: docker kubernetes docker-entrypoint


【解决方案1】:

这个错误不是入口点错误,而是里面的命令。始终使用“sh script.sh”启动脚本,无论是入口点还是 cmd。在这种情况下,它将是:ENTRYPOINT ["sh", "entrypoint.sh"]

【讨论】:

  • ENTRYPOINT ["sh", "entrypoint.sh"]ENTRYPOINT ["/entrypoint.sh"] 是相同的。所以没必要这样做。
  • 绝对不一样,一个需要可执行权限,一个不需要。试着弄清楚。
  • 然后必须在脚本开头插入!#/bin/bash!#/bin/sh。还有怎么知道脚本文件没有这一行
  • 好吧,如果您不添加该行,您将处于绝对灾难状态。您的脚本在环境之间的行为不会相同并且一致,如果您不遵循 bash 脚本的第一条规则,那么它是您的选择。
  • 所以,你不能说脚本没有这样的行。如果这是真的,在 ENTRYPOINT 中添加 'sh' 是不必要的,这不是解决方案。
【解决方案2】:

我使用 Dockerfile 和 entrypoint.sh 文件创建了一个 github 操作。我在我的计算机中运行命令“chmod +x”并推送到 github 存储库。我没有在 Dockerfile 中运行 'chmod +x'。它有效。

【讨论】:

    【解决方案3】:

    托盘 docker exec -it /bin/sh

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2019-11-05
    • 2020-08-31
    • 2021-11-05
    • 2016-12-17
    相关资源
    最近更新 更多