我所有的问题都是最新版本的DOCKER
守护进程仍然需要以root身份运行吗?
每个有权访问Docker组的用户都拥有root权限?因此,原始root用户和拥有Docker组权限的用户之间没有任何区别。如果有差异,他们是什么?
因此,使用授权插件,您只需限制用户访问Docker守护程序,但不限制用户对主机的其他权限? (假设此Docker组/用户中有权访问Docker守护程序的主机具有root权限 - 我之前的问题)
" runc,containerd"之间是否有任何联系?和" docker守护进程作为root运行"?或者这些(runc,containerd)仅用于支持OCI格式?我有一个愚蠢的想法,这些是为了消除作为root运行的docker而引入的 - 我确信这是错误的,但需要确认。
答案 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)