gpt4 book ai didi

docker - 以 root 和非 root 身份运行 docker

转载 作者:行者123 更新时间:2023-12-01 09:45:03 28 4
gpt4 key购买 nike

对“以非 root 用户和 root 用户身份运行 docker”感到困惑。

第一个问题(以非root用户运行):基于Post-installation steps for Linux ,要以非 root 身份运行 docker,我们创建 docker 组并将用户添加到其中。然而,文章声称“docker 组授予与 root 用户等效的权限”。所以如果我对这句话的理解正确,我们不是以root身份运行docker,而是以与root一样强大的用户(在docker组中)运行它?

第二个问题(以 root 用户身份运行):假设我按照上述步骤操作(创建 docker 组并将用户添加到其中)。然而,我在 Dockerfile 中指定了“USER root”(下面的示例)。当我运行这个容器时,无论上面的设置如何,它都会以 root 身份运行,对吗?

FROM debian:stretch
USER root
CMD["echo", "hello"]

最佳答案

The docker group grants privileges equivalent to the root user



默认是。对于任何可以在机器上运行 docker 容器的用户来说也是如此。

原因是默认情况下,当您在容器内以 root 身份运行时,这将映射到主机上的 root。
因此,您可以将主机上的一些敏感文件夹绑定(bind)到容器上,并在这些挂载上执行特权操作,因为容器内的用户是 root (pid 0)。

解决方案是启用 user-namespace这基本上会将容器内的root用户映射到机器上的非root用户。

Second question (run as root user): assume I followed the steps above (create docker group and add user to it). Yet I specify "USER root" in a Dockerfile (example below). When I run this container, it will run as root regardless of the setting above, correct?



这里有几点:
  • 默认情况下,USER root是默认值,因此您不必指定它。 (除非基础镜像明确设置了 root 以外的用户)
  • 从宿主机的角度来看,一个 docker 容器只是一个普通的进程。每个进程都有一个所有者。此所有者是主机
    执行 docker run 的用户命令。 USER root指令与此所有者无关。 USER 指令仅指定容器内的用户
    将在与容器所有者不同的容器内启动进程。
  • 关于docker - 以 root 和非 root 身份运行 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810825/

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