Permissions

Docker 容器創建的文件歸 root 所有

  • November 27, 2021

我有一個 Docker 映像,它在發生錯誤時會生成類似日誌的文件。我已經使用綁定掛載將它寫入的目錄掛載到我的主機上。但是,創建的文件歸root. 儘管我的使用者帳戶具有 root 權限,但在每次執行容器後執行chownchgrp檢查文件是很乏味的。

有沒有辦法讓容器將文件的所有者和組設置為執行容器的使用者?

在某些情況下,這是我創建的一個玩具範例:

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

注意:根據您的容器,這可能無法開箱即用(例如,因為在容器內您需要打開一個特權埠,或者您的腳本只能由給定的(超級)使用者訪問)

引用自:https://unix.stackexchange.com/questions/627027