Docker根权限级别查询

时间:2016-07-01 02:39:45

标签: docker

我所有的问题都是最新版本的DOCKER

  1. 守护进程仍然需要以root身份运行吗?

  2. 每个有权访问Docker组的用户都拥有root权限?因此,原始root用户和拥有Docker组权限的用户之间没有任何区别。如果有差异,他们是什么?

  3. 因此,使用授权插件,您只需限制用户访问Docker守护程序,但不限制用户对主机的其他权限? (假设此Docker组/用户中有权访问Docker守护程序的主机具有root权限 - 我之前的问题)

  4. " runc,containerd"之间是否有任何联系?和" docker守护进程作为root运行"?或者这些(runc,containerd)仅用于支持OCI格式?我有一个愚蠢的想法,这些是为了消除作为root运行的docker而引入的 - 我确信这是错误的,但需要确认。

1 个答案:

答案 0 :(得分:0)

Daemon still need to run as a root right? 

2019年2月更新:不,它不再需要root了! 请参阅" Install Docker binary on a server without root access"

原始答案(2016年7月)

是的,您可以在" Configuring and running Docker on various distributions"中看到它,即使it adds

  

从Docker 1.12开始,容器可以在没有Docker或containerd运行的情况下运行   这允许Docker守护程序退出,升级或从崩溃中恢复,而不会影响系统上正在运行的容器   要启用此功能,您需要在启动--live-restore时添加dockerd标记。这将确保Docker在正常关闭或重启时不会杀死容器,使容器继续运行。

Every user having access to Docker group, has root permissions?
So, there is no difference at all between original root user
and user having permissions to Docker group? 

不完全是。当守护程序启动时,docker守护程序将使docker组可以读取/写入Unix套接字的所有权

如" Docker daemon attack surface" (仍为1.12)

  

只允许受信任的用户控制您的Docker守护程序。

     

您可以启动一个容器,其中/host目录将是您主机上的/目录;并且容器将能够无任何限制地更改主机文件系统。

所以docker组的用户部分是而不是 root。但它可以访问所有可以从主机安装任何东西的容器。这是......非常接近根。

So, with authorization plugins you just restrict access of a user to Docker daemon
but not to the other permissions that the user has on host? 

" authorization plugin"页面has not changed significantly,因为码头1.11 主要变化是:

  

如果在Docker daemon中启用了TLS,则默认用户授权流程会从证书使用者名称中提取用户详细信息。   +即,User字段设置为客户端证书使用者公用名,AuthenticationMethod字段设置为TLS

Is there any link between "runc, containerd" and
"docker daemon running as a root"? 
or else are these (`runc`,`containerd`) introduced only for supporting OCI format?

issue 15187 "User namespaces - Phase 1"runc PR 160

  

预启动挂钩在容器进程启动(克隆到新命名空间)之后但在执行用户命令(例如bash)之前运行。这允许某人在容器的命名空间中做一些有用的事情。

I had a stupid thought that these are introduced for eliminating docker running as a root

这更有可能通过用户命名空间来实现 用户(用户名空间)seems still experimental(来自PR 12648