簡體   English   中英

如何修復 Docker sh 入口點中的“權限被拒絕”

[英]How to fix 'Permission denied' in Docker sh entrypoint

我正在嘗試為 Garry 的 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/來代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM