Permissions
Docker 容器創建的文件歸 root 所有
我有一個 Docker 映像,它在發生錯誤時會生成類似日誌的文件。我已經使用綁定掛載將它寫入的目錄掛載到我的主機上。但是,創建的文件歸
root
. 儘管我的使用者帳戶具有 root 權限,但在每次執行容器後執行chown
並chgrp
檢查文件是很乏味的。有沒有辦法讓容器將文件的所有者和組設置為執行容器的使用者?
在某些情況下,這是我創建的一個玩具範例:
Dockerfile
FROM debian WORKDIR /root VOLUME /root/output COPY run.sh /root/ ENTRYPOINT ["./run.sh"]
run.sh
#!/bin/bash echo hello > output/dump
我的執行命令是
docker run -v $PWD/output:/root/output test
這些文件由在容器中執行的使用者創建。如果您的容器化命令執行為
root
,那麼所有文件都將以 root 身份創建。如果您希望以其他使用者身份創建文件,請以其他使用者身份執行容器。例如
docker run -v "$(pwd)/output":/root/output -u $(whoami) test
注意:根據您的容器,這可能無法開箱即用(例如,因為在容器內您需要打開一個特權埠,或者您的腳本只能由給定的(超級)使用者訪問)