[英]“Permission denied” in Docker container unless --privileged=true
[英]Docker "permission denied" in container
我正在嘗試通過以下方式運行 docker 映像
docker run -it -v $PWD/examples:/home/user/examples image
這應該使主機中的$PWD/examples
可以在容器中訪問。 然而,當我ls
的容器,它不斷給我
ls: cannot access 'examples': Permission denied
我已經嘗試過類似問題的答案, z/Z
選項和chcon -Rt svirt_sandbox_file_t /host/path/
並run --privileged
,但它們對我的情況都沒有任何影響。 事實上, z
選項似乎在第一次ls
時起作用,但是當我第二次發出ls
時,它再次被拒絕。
在評論中,結果表明圖像的Dockerfile
中可能有一條USER
指令。 由於examples
文件訪問權限,不允許該用戶訪問examples
。
可以使用 docker run 選項--user
取代USER
。
一個快速而骯臟的解決方案是使用--user=root
運行以允許任意訪問。 請注意,在容器中以root
身份寫入文件夾examples
文件將由root
擁有。
更好的解決方案是尋找examples
所有者,稱他為foo
。 指定其用戶 id 和組 id 以在容器中具有完全相同的用戶:
docker run --user $(id -u foo):$(id -g foo) imagename
另一種可能的解決方案是允許任意訪問chmod 666 examples
或chmod 644 examples
,但很可能您不想要那樣。
最好的方法是查看 Dockerfile 並檢查USER
指令的目的。
--user=foo
或更准確地說--user=$(id -u foo):$(id -g foo)
。USER
,則最好更改examples
訪問權限。examples
的所有者。嘗試以特權身份運行容器:
sudo docker run --privileged=true -itd -v /***/***:/*** ubuntu bash
例如: sudo docker run --privileged=true -itd -v /home/willie:/wille ubuntu bash
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.