如何修复 Docker sh 入口点中的“权限被拒绝”
问题:如何修复 Docker sh 入口点中的“权限被拒绝” 我正在尝试为 Garry's Mod 服务器创建一个易于使用的 Docker 映像。虽然我的 Docker 映像构建得很好,但将其作为容器运行总是会导致一个错误:/bin/sh: 1: ./easygmod.sh: Permission denied。 我使用cm2network/steamcmd图像作为基础。我已经尝试了上述基本图像具
问题:如何修复 Docker sh 入口点中的“权限被拒绝”
我正在尝试为 Garry's Mod 服务器创建一个易于使用的 Docker 映像。虽然我的 Docker 映像构建得很好,但将其作为容器运行总是会导致一个错误:/bin/sh: 1: ./easygmod.sh: Permission denied
。
我使用cm2network/steamcmd
图像作为基础。我已经尝试了上述基本图像具有的两个标签。我尝试过chmod +x
,将用户更改为root
,并在easygmod.sh
脚本的第一行中摆弄 shebang,以及一些可能的拼写错误,特别是在文件名和路径中。
我有一个GitHub 存储库用于这个项目,自动构建到 Docker Hub。目前,涉及有问题的脚本的代码行是:
# Start main script
ADD easygmod.sh .
RUN chmod +x easygmod.sh
USER steam
CMD ./easygmod.sh
另外,脚本的shebang/第一行当前是#!/bin/sh
。
尽管没有逻辑解释,easygmod.sh
脚本拒绝执行,总是抛出错误Permission denied
。考虑到我唯一的其他公共 GitHub 项目非常相似(与cm2network/steamcmd
具有相同基本操作系统的类似风格的 Docker 映像),这尤其令人困惑,从未遇到过这样的问题。
解答
该文件在容器中不属于steam
所有,因此chmod +x
不足。要么将--chown=steam
添加到ADD
,要么将chmod
从+x
更改为a+rx
。
此外,您没有指定 CWD 或放置这些文件的路径。该映像的root
版本可能具有steam
无法访问的 CWD。你应该使用/home/steam/
来代替。
更多推荐
所有评论(0)