[英]Docker access permissions on mounted volumes. Why do they belong to root?
我已經將Docker設置為以非root用戶身份運行。 現在,我可以以普通用戶的身份啟動容器了,我感覺更加舒適。
me@machine:~$ docker run -it -v ~/test:/test alpine:3.6 sh
/ # touch /test/test1
同時在主機上:
me@machine:~$ ls -l ~/test/
total 0
-rw-r--r-- 1 root root 0 Jul 31 15:50 test1
為什么文件屬於root
? 如何使它們和容器中所有創建的文件屬於me
?
有趣的事實:這在Debian Linux上發生。 相反,在Mac上執行相同的操作,創建的文件將屬於me
。
Mac OS Docker和Linux Docker在行為上有很多變化。 因此,請忽略該部分。 專注於Linux方面。
您使用https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user
所做的操作基本上只是意味着非root用戶可以訪問碼頭工人組。 通過該docker組,您可以執行docker命令。 但是docker daemon仍以root用戶身份運行。
您可以通過運行來確認
ps aux | grep dockerd
而且,當您執行卷映射時,該目錄由docker創建,該目錄最終具有root用戶權限。 您正在尋找的內容最近已作為Docker user namespaces
。 請閱讀以下網址的詳細信息
https://success.docker.com/KBase/Introduction_to_User_Namespaces_in_Docker_Engine
這將指導您如何使用映射用戶而不是root用戶運行docker容器。 簡而言之,創建/更新/etc/docker/daemon.json
文件以包含以下內容
/etc/docker/daemon.json
{
"userns-remap": "<a non root user>"
}
並重新啟動docker服務。 現在,您內部的Docker容器將認為它們具有root特權,但它們將以非root用戶身份在主機上運行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.