1
我正在嘗試更改碼頭集裝箱內的配置文件。對碼頭集裝箱執行sed命令
docker exec container_name sed -ire '/URL_BASE = /c\api.myapiurl' tmp/config.ini
本地執行此sed命令工作得很好,但是當我嘗試在容器中執行此操作時,我收到以下錯誤消息。
sed: cannot rename tmp/config.ini: Operation not permitted
我需要做的是從「的config.ini」更換「URL_BASE =」之前部署容器到我的服務器。
我不知道爲什麼sed命令試圖重命名文件,當它不假設。
任何想法?
我已經試過
我試圖與--privileged標誌來執行,但沒有奏效。我試圖用chmod來改變文件的權限,但我不能以同樣的權限爲由。
docker exec --privileged container_name sed -ire '/URL_BASE = /c\api.myapiurl' tmp/config.ini
Result: sed: cannot rename tmp/config.ini: Operation not permitted
CHMOD
docker exec --privileged container_name chmod 755 tmp/config.ini
Result: chmod: changing permissions of 'tmp/config.ini': Operation not permitted
我也試過泊塢窗之前使用sudo執行,但也不能工作。
這是正確的命令來取代你的字符串?您可以在手動執行時驗證它:'docker run -it bash'然後執行sed <...>' –
n2o
sed inplace通過創建文件的副本然後將其替換爲原始文件來工作。你的問題是,你使用管理員權限在容器內創建了文件,但是在後面的部分轉移到另一個用戶。所以,無論何時你試圖執行exec,你都以非管理員用戶的身份輸入這些命令。告訴我們你的Dockerfile。你可以通過鍵入以下命令來驗證它:'docker exec container_name whoami'和'docker exec container_name ls -l tmp/config.ini' –