gpt4 book ai didi

linux - Docker 对已安装卷的访问权限。为什么它们属于root?

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:32 26 4
gpt4 key购买 nike

我已将 Docker 设置为 non-root user 运行。现在我可以以普通用户的身份启动我的容器,我感觉更舒服了。

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?我怎样才能让它们以及容器中所有创建的文件都属于

有趣的事实:这种情况发生在 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 命令。但 docker 守护进程仍在以 root 用户身份运行。

您可以通过运行来确认

ps aux | grep dockerd

当您进行卷映射时,该目录由 docker 创建,最终具有 root 用户权限。您正在寻找的内容最近已作为 Docker 用户命名空间 推出。请阅读以下网址的详细信息

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 用户身份运行

关于linux - Docker 对已安装卷的访问权限。为什么它们属于root?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45417956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com