簡體   English   中英

對已安裝卷的Docker訪問權限。 為什么它們屬於根?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM